当模型中的属性更改时,我希望执行methodToBeCalledWhenPropertyIsSet()方法。
我该如何做到这一点呢?
如果我理解正确的话,我可以在我的ViewModel中添加MyModel.PropertyChanged += methodToBeCalledWhenPropertyIsSet
来订阅PropertyChanged事件,但我只关心当Property被设置时。
public class ViewModel : INotifyPropertyChanged
{
...
public Model MyModel { get; set; }
public void methodToBeCalledWhenPropertyIsSet() { }
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public class Model : INotifyPropertyChanged
{
object _propertyField;
public object Property
{
get
{
return _propertyField;
}
set
{
_propertyField = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
void methodToBeCalledWhenPropertyIsSet(object sender, PropertyChangedEventArgs e)
,然后检查if (e.PropertyName=="Property")
。 - BoluPropertyChanged
事件有什么问题吗?当属性被设置时应该调用它。 - dkozl