我有
public override bool RelatedProperty
{
get { return this.SomeProperty > 0; }
}
public int SomeProperty
{
get { return this.someProperty; }
protected set
{
this.Set<int>(ref this.someProperty, value);
this.RaisePropertyChanged(nameof(this.RelatedProperty));
}
}
RelatedProperty
显然取决于SomeProperty
。
是否有更好的方法来更新绑定,而不是从RaisePropertyChanged
的设置者调用RelatedProperty
的{{1}}?
答案 0 :(得分:1)
是否有更好的方法来更新绑定,而不是从SomeProperty的setter调用RelatedProperty的RaisePropertyChanged?
没有。至少不使用MvvmLight和实现属性的必要方法。
如果您使用的是反应性UI框架,例如ReactiveUI,您将以功能方式处理属性更改:
public class ReactiveViewModel : ReactiveObject
{
public ReactiveViewModel()
{
this.WhenAnyValue(x => x.SomeProperty).Select(_ => SomeProperty > 0)
.ToProperty(this, x => x.RelatedProperty, out _relatedProperty);
}
private int _someProperty;
public int SomeProperty
{
get { return _someProperty; }
set { this.RaiseAndSetIfChanged(ref _someProperty, value); }
}
private readonly ObservableAsPropertyHelper<bool> _relatedProperty;
public bool RelatedProperty
{
get { return _relatedProperty.Value; }
}
}
如果您有兴趣,可以在ReactiveUI的文档和创建者Paul Betts的博客中阅读更多相关信息:
https://docs.reactiveui.net/en/fundamentals/functional-reactive-programming.html http://log.paulbetts.org/creating-viewmodels-with-reactiveobject/