DataGrid - связать пользовательский объект с подсписком - PullRequest
1 голос
/ 12 декабря 2011

у меня есть

ObservableCollection<CustomObj> DataInfo 

в моем проекте MVFM WPF. Класс CustomObj выглядит следующим образом:

public class class1 : ObservableObject
{
    public class1()
    {
        MySecondProperty = new Class2();
    }

    public string MyStringValue { get; set; }
    public Class2 MySecondProperty { get; set; }
    public List<Class3> MyThirdProperty{ get; set; }
}

Когда бы я ни привязывал свойство WPF, как это

<DataGrid Name="dgMyDataGrid" 
              SelectedItem="{Binding SelectedItem}"
              ItemsSource="{Binding DataInfo}">
</DataGrid>

Я получаю значение из «MyStringValue», объект и коллекцию в моей сетке данных. Google не дает мне никакого результата, и я не могу найти ничего похожего на этот пример.

Как я могу легко получить данные из Class2 и из Списка, чтобы показать данные?

1 Ответ

2 голосов
/ 13 декабря 2011

вам нужно определить столбцы и связать их внутри определения столбца.

Далее будет показано значение MySecondProperty.SubProperty во втором столбце

Для Class3, если вы хотите что-то вроде комбинированного списка, используйте шаблонный столбец сетки данных http://blogs.msdn.com/b/vinsibal/archive/2008/08/19/wpf-datagrid-stock-and-template-columns.aspx имеет информацию о шаблонах столбцов

<DataGrid Name="dgMyDataGrid" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding DataInfo}">
  <DataGrid.Columns>
    <DataGridTextColumn Header="MyStringValue " Width="*" Binding="{Binding Path=MyStringValue }" />
    <DataGridTextColumn Header="MySecondProperty.SubProperty" Width="*" Binding="{Binding Path=MySecondProperty.SubProperty}" />
  </DataGrid.Columns>
</DataGrid>
...