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