MS DataGrid (WPF): как привязать поле со списком к классу?

Это может показаться тривиальным вопросом, но даже здесь, в Stackflow, я нашел привязку только к простой коллекции строк.

У меня есть родительский класс с двумя свойствами Name и Age.

У меня есть класс Child с двумя свойствами ChildName и ChildAge.

В шаблоне MVVM я выставляю эти свойства в ViewModels, и, кроме того, я также добавляю в ParentViewModel также ObservableCollection Children

Поэтому ParentViewModel содержит три открытых свойства: Name, Age и Children.

//Inside ParentViewModel
public ObservableCollection<ChildViewModel> Children

Мой Window.xaml привязан к MainViewModel, которая предоставляет

public ObservableCollection<ParentViewModel> Parents { get; set; }

Datagrid определяется следующим образом:

<DataGrid ItemsSource="{Binding Parents}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
                <DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
                <DataGridComboBoxColumn Header="Children" 
                                        DisplayMemberPath="ChildName" 
                                        SelectedValueBinding="{Binding Children.ChildName}"
                                        SelectedValuePath="ChildName"
                                        SelectedItemBinding="{Binding Children}"
                                        >

                </DataGridComboBoxColumn>
            </DataGrid.Columns>
        </DataGrid>

Хотя имя и возраст родителей отображаются правильно, поле со списком «Дети» не заполнено. Я смущен и расстроен. Пожалуйста помоги. :)


person Houman    schedule 02.10.2010    source источник


Ответы (1)


Установите для свойства ItemsSource объекта DataGridComboBoxColumn значение Children.

person Prince Ashitaka    schedule 02.10.2010