在视图模型中,有一个属性依赖于另一个属性值:
private int _property;
public int Property
{
get
{
return _property;
}
set
{
SetProperty(ref _property, value, () => Property);
}
}
public int DependentProperty => Property + SomeLogic;
字符串
和视图:
<TextBlock Text="{Binding DependentProperty}" />
型
我想在_属性更改时更新视图
我发现:this question说你必须订阅Property的PropertyChanged事件,但我不知道如何订阅。
2条答案
按热度按时间waxmsbnn1#
DependentProperty
被称为计算属性。在本例中,INotifyPropertyChanged.PropertyChanged
事件通过调用SetProperty
方法隐式引发。您所要做的就是显式引发计算属性的事件。通常,您已经有了一个事件调用器方法实现,
SetProperty
方法也在内部使用它。例如,如果使用.NET社区工具包,则已经继承了可以调用的
protected virtual ObservableObject.OnPropertyChanged(propertyName: string):void
方法。字符串
当然,如果你想避免从计算属性所依赖的每个属性中显式引发
PropertyChanged
事件,你可以观察所需的属性:型
vm0i2vca2#
你需要实现
INotifyPropertyChanged
接口到模型。然后实施
字符串
当你
set
的时候,属性就调用OnPropertyChanged(<ProperyName>)
。建议:不要将业务逻辑放入模型本身。