c# - How to call StyleSelector on PropertyChanges of a row -
i have rowstyleselector datagrid. it's called correctly on load of window. on changes of rows when call propertychange it's not called.
<datagrid grid.row="2" columnwidth="*" itemssource="{binding traceitemcollectionviewsource , mode=twoway , updatesourcetrigger=propertychanged}" enablerowvirtualization="false" rowstyleselector="{staticresource tracerowstyleselector}" isreadonly="true" name="tracedatagrid" margin="5,5,5,5" padding="5,5,5,5" autogeneratecolumns="false">
this model:
public class tracedataitem : observableobject { private string _newreelid; public string newreelid { { return _newreelid; } set { if (value != _newreelid) { _newreelid = value; raisepropertychanged("newreelid"); } } } }
how can make rowstyleselector
called when propertychanged("newreelid")
called .
thanks.
styleselector
doesn't listen propertychange
notifications. can use datatrigger
based on boolean property instead:
bool _reelidchanged; public bool reelidchanged { { return _reelidchanged; } set { _reelidchanged = value; raisepropertychanged("reelidchanged"); } } private string _newreelid; public string newreelid { { return _newreelid; } set { if (value != _newreelid) { _newreelid = value; reelidchanged = true; raisepropertychanged("newreelid"); } else reelidchanged = false; } }
xaml:
<window.resources> <style targettype="datagridrow" x:key="tracerowstyle"> <setter property="background" value="{dynamicresource databackground}" /> <style.triggers> <datatrigger binding="{binding path=reelidchanged }" value="true"> <setter property="background" value="red" /> </datatrigger> </style.triggers> </style> </window.resources>
...
<datagrid grid.row="0" columnwidth="*" itemssource="{binding traceitemcollectionviewsource , mode=twoway , updatesourcetrigger=propertychanged}" enablerowvirtualization="false" rowstyle="{staticresource tracerowstyle}" isreadonly="true" name="tracedatagrid" margin="5,5,5,5" padding="5,5,5,5" autogeneratecolumns="false"/>
Comments
Post a Comment