mvvm - WPF DataGrid binding -
mvvm - WPF DataGrid binding -
i came across issue when ilist bound datagrid.
the class construction is,
public class client { public virtual int customerid { get; set; } public virtual string name { get; set; } public virtual string addressline1 { get; set; } public virtual string addressline2 { get; set; } public virtual string addressline3 { get; set; } public virtual bool isactive { get; set; } public virtual salesline salesline { get; set; } public virtual int precedence { get; set; } } public class salesline { public virtual int saleslineid { get; set; } public virtual string name { get; set; } public virtual salesperson salesperson { get; set; } public virtual ilist<customer> customers { get; set; } }
i create new ilist of client class.
ilist<customer> customerlist = new ilist<customer>();
then "customerlist" populated. since client has salesline "saleslines" ilist populated sales lines in database.
now next xaml going bind customerlist datagrid,
<datagrid autogeneratecolumns="false" grid.column="1" grid.row="1" horizontalalignment="stretch" name="grdcustomers" verticalalignment="stretch" grid.columnspan="2" itemssource="{binding customerlist}" canuseraddrows="true"> <datagrid.columns> <datagridtextcolumn header="name" binding="{binding name}" width="250" /> <datagridtextcolumn header="address street" binding="{binding addressline1}" width="150" /> <datagridtextcolumn header="address town" binding="{binding addressline2}" width="150" /> <datagridtextcolumn header="address area" binding="{binding addressline3}" width="150" /> <datagridcheckboxcolumn header="is active" binding="{binding isactive}" width="75" /> <datagridcomboboxcolumn header="sales line" width="150" selecteditembinding="{binding salesline}" selectedvaluepath="saleslineid" displaymemberpath="name"> <datagridcomboboxcolumn.elementstyle> <style targettype="combobox"> <setter property="itemssource" value="{binding relativesource={relativesource findancestor, ancestortype={x:type usercontrol}}, path=datacontext.saleslinelist}"/> </style> </datagridcomboboxcolumn.elementstyle> <datagridcomboboxcolumn.editingelementstyle> <style targettype="combobox"> <setter property="itemssource" value="{binding relativesource={relativesource findancestor, ancestortype={x:type usercontrol}}, path=datacontext.saleslinelist}"/> </style> </datagridcomboboxcolumn.editingelementstyle> </datagridcomboboxcolumn> </datagrid.columns> </datagrid>
now display columns except sales line column.
even though have bound salesline column, not display current rows sales line name in grid. however, when click on dropdown box, dropdown populated.
please help me displaying sales line name on sales line column.
this because customer.salesline
property not point object in saleslinelist
you need overwrite tostring()
method in salesline
class create 2 objects same if ids match. default, consider them same if reference exact same object in memoroy.
wpf mvvm
Comments
Post a Comment