Friday, 15 July 2011

c# - WPF: Dictionary<int, List> in DataGrid -



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