I have a list of items which I want to present in a datagrid. But each item contains a list of KeyValuePairs which I want to view horizontally. Is there any way?
The object I want to present:
public class ItemModel
{
public string Model { get; set; }
public List<KeyValuePair<string, int>> DetailsList { get; set; }
}
My xaml looks like this, but it returns a datagrid with Key and Value as columns instead of Key1, Key2, Key3 etc as columns:
<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>
this is a simple example how you bind to a keyvaluepair + horizontal view
<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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.