我可以在水平视图中创建包含 List<KeyValuePair> 的对象的 DataGrid 吗?
Can I create a DataGrid of an object containing a List<KeyValuePair> in horizontal view?
我有一个要在数据网格中显示的项目列表。但是每个项目都包含一个我想水平查看的 KeyValuePairs 列表。有什么办法吗?
我要呈现的对象:
public class ItemModel
{
public string Model { get; set; }
public List<KeyValuePair<string, int>> DetailsList { get; set; }
}
我的 xaml 看起来像这样,但它 returns 一个以键和值作为列而不是 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>
我有一个要在数据网格中显示的项目列表。但是每个项目都包含一个我想水平查看的 KeyValuePairs 列表。有什么办法吗?
我要呈现的对象:
public class ItemModel
{
public string Model { get; set; }
public List<KeyValuePair<string, int>> DetailsList { get; set; }
}
我的 xaml 看起来像这样,但它 returns 一个以键和值作为列而不是 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>