我有一个对象(Entity)的集合,其中包含一个子集合(Result是Double [])。
我想在DataGrid(或其他控件)中显示我的实体(实体)集合,我想在同一行显示我的子集合(我的子集合中的每个值对应一列)
前[编辑]:
Entity name | Entity Value | Result1 | Result2 | ... | Result n
_______________________________________________________________
My Name | MyValue | 1 | 2 | ... | 3
My Name II | other Value | 10% | 20% | ... | 30%
我实际上使用的是基于此thread中描述的ICustomTypeDescriptor和PropertyDescriptor的解决方案,但它不合适,因为我们想要编辑DataGrid中的值,并且维护和进化也非常复杂。
答案 0 :(得分:1)
如果您有静态的Result
项,那么您可以关闭AutoGenerateColumns
并定义自己的绑定到这些值的列
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" />
<DataGridTextColumn Binding="{Binding Value}" />
<DataGridTextColumn Binding="{Binding Results[1]}" />
<DataGridTextColumn Binding="{Binding Results[2]}" />
....
</DataGrid.Columns>
</DataGrid>
如果您有动态金额,则可以使用DataGridTemplateColumn
并以ItemsControl
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" />
<DataGridTextColumn Binding="{Binding Value}" />
<DataGridTemplateColumn>
<DataGridTemplateColumn.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Results}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Width="50" Value="{Binding }" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.ItemTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>