Tuesday, 15 January 2013

c# - Two way binding ignores source changes -



c# - Two way binding ignores source changes -

i have custom command dependency property , binding viewmodel property works onewaytosource. did mess up?

binding

<local:mycontrol selecteditem="{binding selectedpage}"/>

viewmodel , control

public class viewmodel : inotifypropertychanged { public event propertychangedeventhandler propertychanged; private viewmodelpagebase _selectedpage; public viewmodelpagebase selectedpage { { homecoming _selectedpage; } set { _selectedpage = value; onpropertychanged(); } } public void onpropertychanged([callermembername] string property = "") { if (propertychanged != null) propertychanged(this, new propertychangedeventargs(property)); } } public class mycontrol : contentcontrol { public object selecteditem { { homecoming (object)getvalue(selecteditemproperty); } set { // never here setvalue(selecteditemproperty, value); } } public static readonly dependencyproperty selecteditemproperty = dependencyproperty.register( "selecteditem", typeof(object), typeof(mycontrol), new frameworkpropertymetadata(null, frameworkpropertymetadataoptions.bindstwowaybydefault)); }

earlier using itemscontrol , binding working two-way. now, mycontrol, if selecteditem changed, selectedpage updated. other way (setting selectedpage somewhere) doesn't update selecteditem.

ideas?

i see comment on setter of dependency property :

public object selecteditem { { homecoming (object)getvalue(selecteditemproperty); } set { // never here setvalue(selecteditemproperty, value); } }

i think know that, in case don't in dependency property setter never call, if want notify of change, should add together propertychangedcallback in 3rd parameter of frameworkpropertymetadata

setters not run on dependency properties?

c# wpf mvvm binding

No comments:

Post a Comment