gpt4 book ai didi

wpf - 我可以避免为依赖属性显式调用 RaisePropertyChanged 吗?

转载 作者:行者123 更新时间:2023-12-03 10:17:31 26 4
gpt4 key购买 nike

我有

    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 更好的方法来更新绑定(bind)?对于 RelatedProperty ,来自 SomeProperty 的 setter ?

最佳答案

Is there a better way to update the binding, than invoking RaisePropertyChanged for RelatedProperty, from the setter of SomeProperty?



不,至少不使用 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/

关于wpf - 我可以避免为依赖属性显式调用 RaisePropertyChanged 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com