2016-08-22 110 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