2011-12-12 29 views
1

反對我在MVVM WPF項目有的DataGrid - 綁定定製與子表

ObservableCollection<CustomObj> DataInfo 

。 的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」,和對象數據網格我的價值和收藏。 谷歌給我沒有結果,我找不到任何類似於這個例子。

如何以簡單的方式從Class2和List中獲取我的數據以顯示數據?

+0

您想讓您的Class2顯示爲什麼? – 2011-12-12 16:10:22

+0

我想到的是Class2具有其他屬性的方式,我希望將其顯示爲列。並根據每個類(2和3)具有的屬性,「即時」生成列。 – user1087261

回答

2

您需要定義列並在列定義內進行綁定。

以下將顯示MySecondProperty.SubProperty的值在第二列

對於Class3的,如果你想爲像一個組合框,然後用模板DataGrid列 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> 
+0

感謝Anton的回覆,我已經環視了一下,但它的接縫與您的答案一樣,很難達到我想要的效果。我需要從代碼隱藏中生成列。但是我通過創建DataTable並將DataView綁定到DataGrid來解決我的問題。這不是最佳的方式,但它打印出我想要的。但感謝您的回覆,我現在知道如何使用SubProperty。 :) – user1087261