[英]Can I create a DataGrid of an object containing a List<KeyValuePair> in horizontal view?
我有一个要在数据网格中显示的项目列表。 但是每个项目都包含一个我想水平查看的 KeyValuePairs 列表。 有什么办法吗?
我想介绍的 object:
public class ItemModel
{
public string Model { get; set; }
public List<KeyValuePair<string, int>> DetailsList { get; set; }
}
我的 xaml 看起来像这样,但它返回一个数据网格,其中 Key 和 Value 作为列而不是 Key1、Key2、Key3 等作为列:
<DataGrid x:Name="PurchaseOrder" CanUserAddRows="False" AutoGenerateColumns="False" CellEditEnding="PurchaseOrder_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Path=Model}" />
<DataGridTemplateColumn Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<DataGrid ItemsSource="{Binding DetailsList}" CanUserAddRows="False"
AutoGenerateColumns="True" CellEditEnding="Models_CellEditEnding">
</DataGrid>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是一个如何绑定到键值对 + 水平视图的简单示例
<DataGrid x:Name="PurchaseOrder" CanUserAddRows="False" AutoGenerateColumns="False" CellEditEnding="PurchaseOrder_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Path=Model}" />
<DataGridTemplateColumn Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding DetailsList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Key}"/>
<TextBlock Text="{Binding Value}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.