This question is locked. New answers and comments are not allowed.
I've found the example at this forum of binding enum to radgridview, but it doesn't work how I need, and I need it on today, so i need a help.
Below are classes of this example, and only difference which I need is the possibility to change value of positionof players. Now I can only change position by typing new value, but I need to select it from comboboxcolumn.
How can I do it?
ViewModel
Class Club:
class Player
Enum
and the xaml:
I'm using 2010.1.603.1040 version telerik, so I can't do i tlike therehttp://demos.telerik.com/silverlight/#GridView/EnumDataSource
Below are classes of this example, and only difference which I need is the possibility to change value of positionof players. Now I can only change position by typing new value, but I need to select it from comboboxcolumn.
How can I do it?
ViewModel
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.ComponentModel;using System.Collections.ObjectModel;using System.Collections.Generic;namespace BindingGridViewToEnumCollection{ public class MyViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private ObservableCollection<Club> clubs; private ObservableCollection<Player> players; private object selectedItem; //public IEnumerable<string> AssignedPositions public IEnumerable<Position> AssignedPositions { get { return new[] { Position.DF, Position.FW }; } } public ObservableCollection<Club> Clubs { get { if (this.clubs == null) { this.clubs = Club.GetClubs(); } return this.clubs; } } public ObservableCollection<Player> Players { get { if (this.players == null) { this.players = Player.GetPlayers(); } return this.players; } } public object SelectedItem { get { return this.selectedItem; } set { if (value != this.selectedItem) { this.selectedItem = value; this.OnPropertyChanged("SelectedItem"); } } } protected virtual void OnPropertyChanged(PropertyChangedEventArgs args) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { handler(this, args); } } private void OnPropertyChanged(string propertyName) { this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } }}Class Club:
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.ComponentModel;using System.Collections.ObjectModel;using System.Collections.Generic;using System.Linq;namespace BindingGridViewToEnumCollection{ /// <summary> /// A football club. /// </summary> public class Club : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string name; private DateTime established; private int stadiumCapacity; private ObservableCollection<Player> players; public string Name { get { return this.name; } set { if (value != this.name) { this.name = value; this.OnPropertyChanged("Name"); } } } public DateTime Established { get { return this.established; } set { if (value != this.established) { this.established = value; this.OnPropertyChanged("Established"); } } } public int StadiumCapacity { get { return this.stadiumCapacity; } set { if (value != this.stadiumCapacity) { this.stadiumCapacity = value; this.OnPropertyChanged("StadiumCapacity"); } } } public ObservableCollection<Player> Players { get { if (null == this.players) { this.players = new ObservableCollection<Player>(); } return this.players; } } public Club() { } public Club(string name, DateTime established, int stadiumCapacity) { this.name = name; this.established = established; this.stadiumCapacity = stadiumCapacity; } public Club(string name, DateTime established, int stadiumCapacity, ObservableCollection<Player> players) : this(name, established, stadiumCapacity) { this.players = players; } protected virtual void OnPropertyChanged(PropertyChangedEventArgs args) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { handler(this, args); } } private void OnPropertyChanged(string propertyName) { this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public override string ToString() { return this.Name; } public static ObservableCollection<Club> GetClubs() { ObservableCollection<Club> clubs = new ObservableCollection<Club>(); Club club; // Liverpool club = new Club("Liverpool", new DateTime(1892, 1, 1), 45362); club.Players.Add(new Player("Pepe Reina", 25, Position.GK, "Spain")); club.Players.Add(new Player("Jamie Carragher", 23, Position.DF, "England")); club.Players.Add(new Player("Steven Gerrard", 8, Position.MF, "England")); club.Players.Add(new Player("Fernando Torres", 9, Position.FW, "Spain")); clubs.Add(club); // Manchester Utd. club = new Club("Manchester Utd.", new DateTime(1878, 1, 1), 76212); club.Players.Add(new Player("Edwin van der Sar", 1, Position.GK, "Netherlands")); club.Players.Add(new Player("Rio Ferdinand", 5, Position.DF, "England")); club.Players.Add(new Player("Ryan Giggs", 11, Position.MF, "Wales")); club.Players.Add(new Player("Wayne Rooney", 10, Position.FW, "England")); clubs.Add(club); // Chelsea club = new Club("Chelsea", new DateTime(1905, 1, 1), 42055); club.Players.Add(new Player("Petr Čech", 1, Position.GK, "Czech Republic")); club.Players.Add(new Player("John Terry", 26, Position.DF, "England")); club.Players.Add(new Player("Frank Lampard", 8, Position.MF, "England")); club.Players.Add(new Player("Nicolas Anelka", 39, Position.FW, "France")); clubs.Add(club); // Arsenal club = new Club("Arsenal", new DateTime(1886, 1, 1), 60355); club.Players.Add(new Player("Manuel Almunia", 1, Position.GK, "Spain")); club.Players.Add(new Player("Gaël Clichy", 22, Position.DF, "France")); club.Players.Add(new Player("Cesc Fà bregas", 4, Position.MF, "Spain")); club.Players.Add(new Player("Robin van Persie", 11, Position.FW, "Netherlands")); clubs.Add(club); return clubs; } }}class Player
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.ComponentModel;using System.Collections.ObjectModel;using System.Linq;namespace BindingGridViewToEnumCollection{ /// <summary> /// A football player. /// </summary> public class Player : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string name; private int number; private Position position; private string country; public string Name { get { return this.name; } set { if (value != this.name) { this.name = value; this.OnPropertyChanged("Name"); } } } public int Number { get { return this.number; } set { if (value != this.number) { this.number = value; this.OnPropertyChanged("Number"); } } } public Position Position { get { return this.position; } set { if (value != this.position) { this.position = value; this.OnPropertyChanged("Position"); } } } public string Country { get { return this.country; } set { if (value != this.country) { this.country = value; this.OnPropertyChanged("Country"); } } } public Player() { } public Player(string name, int number, Position position, string country) { this.name = name; this.number = number; this.position = position; this.country = country; } protected virtual void OnPropertyChanged(PropertyChangedEventArgs args) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { handler(this, args); } } private void OnPropertyChanged(string propertyName) { this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName)); } public override string ToString() { return this.Name; } public static ObservableCollection<Player> GetPlayers() { return new ObservableCollection<Player>(Club.GetClubs().SelectMany(c => c.Players)); } }}Enum
namespace BindingGridViewToEnumCollection{ /// <summary> /// A football position. /// </summary> public enum Position { GK, DF, MF, FW }}and the xaml:
<UserControl x:Class="BindingGridViewToEnumCollection.MainPage" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:my="clr-namespace:BindingGridViewToEnumCollection" mc:Ignorable="d" d:DesignHeight="700" d:DesignWidth="700"> <UserControl.Resources> <my:MyViewModel x:Key="MyViewModel"/> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource MyViewModel}"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <telerik:RadGridView Name="playersGrid" Grid.Row="0" ItemsSource="{Binding Players}" AutoGenerateColumns="False"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Number}"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Position}"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Country}"/> </telerik:RadGridView.Columns> </telerik:RadGridView> </Grid></UserControl>I'm using 2010.1.603.1040 version telerik, so I can't do i tlike therehttp://demos.telerik.com/silverlight/#GridView/EnumDataSource