c# - WPF: Dictionary<int, List<string>> in DataGrid -
i have dictionary<int, list<string>>. each id(int) has corresponding dynamic list of names(list<string>).
this expected output in datagrid.
id | name | name | name 1 ash tina kara 2 kc 3 star lara how accomplish this?
<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>
if name not fixed data, need add together column dynamicly this:
datagridtextcolumn column = new datagridtextcolumn(); column.header = "name4"; column.binding = new binding("value[3]"); dg.columns.add(column); all right ,here 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 { { homecoming 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) { (int = count; < 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'd finish yourself
c# wpf datagrid
No comments:
Post a Comment