2016-08-22 149 views
0

你好,我想這個對象的結合列表數據網格:WPF - 綁定兩個列表中的DataGrid

class DataGridRows 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
    public List<Item> Items{get; set;} 
} 

class Item 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
} 

和XAML是:

<DataGrid ItemsSource="{Binding DataGridRows, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Avg}" FontSize="10"/> 
     <DataGridTextColumn Binding="{Binding Number}" FontSize="10"/> 
     <DataGridTextColumn Binding="{Binding Items.Avg}" Header="{Binding Items.Number}"></DataGridTextColumn> 
    </DataGrid.Columns> 

這是不正確的。不要顯示內部列表中的數據。

+1

'Items.Avg'是不正確的綁定路徑。 'Items [0] .Avg'和'Items [0] .Number'應顯示第一項數據。如果你需要*所有*項目數據,你最好使用模板列 – ASh

+0

謝謝,但我不知道如何使用它。請告訴我那個? – bluray

+0

你可以發佈你的ViewModel嗎?什麼是DataGrid DataContext? – Jose

回答

0
<DataGrid ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"> 

給列表<> Items作爲ItemsSource。由於列表包含Item的對象,因此可以將Item類的屬性綁定到數據網格。

C#

class DataGridRows 
{ 
    public List<Item> Items{get; set;} 
} 

class Item 
{ 
    public int Number{get; set;} 
    public int Avg {get; set;} 
} 

XAML

<DataGridTemplateColumn Width="230" Header="Header Text" IsReadOnly="True" CanUserResize="False" > 
    <DataGridTemplateColumn.CellTemplate > 
     <DataTemplate> 
     <TextBlock Text="{Binding Number}" Foreground="White" HorizontalAlignment="Left" TextAlignment="Left" Margin="3,0,0,0" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

<DataGridTemplateColumn Width="230" Header="Header Text" IsReadOnly="True" CanUserResize="False" > 
     <DataGridTemplateColumn.CellTemplate > 
      <DataTemplate> 
      <TextBlock Text="{Binding Avg}" Foreground="White" HorizontalAlignment="Left" TextAlignment="Left" Margin="3,0,0,0" /> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

您可以輕鬆地使用這樣的DataGridTemplate。

+0

你假設DataGridRows是他的DataGrid DataContext – Jose

+0

謝謝,但我的DataContext是DataGridRows的列表。我的表必須是這樣的:1號線 :'DataGridRows.Number | DataGridRows.Avg | DataGridRows.Items [0]。數| DataGridRows.Items [0] .Avg' 線路2: 'DataGridRows.Number | DataGridRows.Avg | DataGridRows.Items [1] .Number | DataGridRows.Items [1] .Avg' DataGridRows的屬性編號和平均值作爲行的標題,而Items中的值是值。 – bluray