Пример кода:DataGridComboBoxColumn не отображается ObservableCollection
class GameListViewModel {
private IGameRepository repository;
public GameViewModel GameViewModel { get; set; }
public ObservableCollection<GameViewModel> Games { get; set; }
public ObservableCollection<GenreViewModel> Genres { get; set; }
public ICommand AddGame_ { get; set; }
public GameListViewModel() {
repository = new DummyGameRepository();
GameViewModel = new GameViewModel();
Games = new ObservableCollection<GameViewModel>(repository.GameList().Select(game => new GameViewModel(game)));
Genres = new ObservableCollection<GenreViewModel>(repository.GameList().Select(game => game.Genre).Distinct().Select(genre => new GenreViewModel(genre)));
AddGame_ = new RelayCommand(AddGame, CanAddGame);
}
}
class Game {
public string Title { get; set; }
public string SubTitle { get; set; }
public int Pegi { get; set; }
public Genre Genre { get; set; }
}
XAML:
<DataGrid ItemsSource="{Binding Games}" AutoGenerateColumns="False" Margin="0,32">
<DataGrid.Columns>
<DataGridTextColumn Header="Title" Binding="{Binding Title}" />
<DataGridTextColumn Header="Sub-Title" Binding="{Binding SubTitle}" />
<DataGridTextColumn Header="Pegi" Binding="{Binding Pegi}" />
<DataGridTextColumn Header="Genre" Binding="{Binding Genre.Name}" />
<DataGridComboBoxColumn Header="Test" ItemsSource="{Binding Genres}" DisplayMemberPath="Name" />
</DataGrid.Columns>
</DataGrid>
Проблема заключается в том, что я хочу выпадающий список, чтобы показать все возможные жанры добавлены к играм, динамически. Для этого я создал ObservableCollection в GameListViewModel. Это не работает! Я боролся с этим сейчас в течение 2 часов ... Позже я хочу, чтобы выбранное значение было Жанром в игре.
Но контекст для загрузки ввода (пока) не в контексте DataGrid, только выбранное значение должно быть ... И решение, которое дает мне пример, не решает мою проблему ... Есть ли другой способ? – Ken
Я считаю, что мой предыдущий комментарий все еще стоит - вы не можете ожидать привязки непосредственно к виртуальной машине из столбца a-la ItemsSource = "{Binding Genres}". В моем обновленном примере я использую статический ресурс, чтобы обойти вашу первую проблему. Позже, когда вы реализуете набор возможностей Genre для конкретных предметов, вам нужно будет использовать что-то более похожее на то, что я включил в ссылки. – Andrew