WPF: Dictionary <int, List <string> in DataGrid

I have a Dictionary<int, List<string>> . Each identifier (int) has a corresponding dynamic list of names ( List<string> ).

This is the expected result in Datagrid.

 ID | Name | Name | Name 1 Ash Tina Kara 2 Kc 3 Star Lara 

How do I achieve this?

+2
source share
2 answers
  <DataGrid x:Name="dg" ItemsSource="{Binding Dic}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="id" Binding="{Binding Key}"/> <DataGridTextColumn Header="Name" Binding="{Binding Value[0]}"/> <DataGridTextColumn Header="Name" Binding="{Binding Value[1]}"/> <DataGridTextColumn Header="Name" Binding="{Binding Value[2]}"/> </DataGrid.Columns> </DataGrid> 

enter image description here

If the name is not fixed, you need to dynamically add the column as follows:

  DataGridTextColumn column = new DataGridTextColumn(); column.Header = "name4"; column.Binding = new Binding("Value[3]"); dg.Columns.Add(column); 

everything is fine, here is my code:

  <DataGrid x:Name="dg" ItemsSource="{Binding Dic}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="id" Binding="{Binding Key}"/> </DataGrid.Columns> </DataGrid> private Dictionary<int, List<string>> dic; public Dictionary<int, List<string>> Dic { get { return dic; } set { dic = value; } } public MainWindow() { InitializeComponent(); this.DataContext = this; Dic = new Dictionary<int, List<string>>(); Dic.Add(1, new List<string> { "a", "b", "c", "5" }); Dic.Add(2, new List<string> { "d" }); Dic.Add(3, new List<string> { "e", "f" }); int count = 0; foreach (List<string> lst in Dic.Values) { if (lst.Count > count) { for (int i = count; i < lst.Count; i++) { DataGridTextColumn column = new DataGridTextColumn(); column.Header = "name" + i; column.Binding = new Binding(string.Format("Value[{0}]", i)); dg.Columns.Add(column); } count = lst.Count; } } } 

but I would like you to finish it yourself

+5
source

Have you tried to bind dictionary collections to Values ? Set dictionary.Values collection as ItemsSource and enable AutoGenerateColumns=True

0
source

Source: https://habr.com/ru/post/1242364/


All Articles