c# - 有没有比使用 WhenAnyValue 和 BindTo 更好的方法来设置读写属性?

标签 c# mvvm reactive-programming reactiveui

我有一个读写属性

    private string _serialNumber;
    public string SerialNumber
    {
        get => _serialNumber;
        set => this.RaiseAndSetIfChanged(ref _serialNumber, value);
    }

我需要更新 Product属性变化。我用 WhenAnyValueBindTo以此目的。
this.WhenAnyValue(x => x.Product)
            .Where(x => x != null)
            .Select(x => x.FirstOrDefault())
            .BindTo(this, x => x.SerialNumber);

但是,我不确定这是否是最好的方法,因为我找不到任何使用 WhenAnyValue 更新读写属性的示例。 .

有更好的解决方案吗?在这种情况下,我是否错误地使用了读写属性?

最佳答案

您可以使用Observable As Property Helper在 View 模型中设置属性的值。然后你想绑定(bind)到 View 。

ObservableAsPropertyHelper<string> _serialNumber;

public string SerialNumber => _serialNumber.Value;

_serialNumber = this.WhenAnyValue(x => x.Product)
        .Where(x => x != null)
        .Select(x => x.FirstOrDefault()).ToProperty(this, x => SerialNumber);

然后只需将 View 绑定(bind)到 ViewModel.SerialNumber

关于c# - 有没有比使用 WhenAnyValue 和 BindTo 更好的方法来设置读写属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863077/

相关文章:

c# - x :Name does not exist in the current context,,但其父级确实

javascript - 在 rxjs Observable 中抛出错误

c# - C#/WinRT 中的全局状态对象

c# - MVVM 异常处理

silverlight - 我可以在EventAggregator中删除重复事件吗?

rx-java - Observable with optional subscribers 执行一次

c# - 如何在 Windows Phone 8 的 MVVM 中添加事件处理程序?

c# - 在 Windows 应用商店应用程序 WebView 中使用请求发布数据 - 使用 C#

c# - HTMLAgilityPack 错误 : "Multiple node elements can' t be created.“

c# - LINQ .ToList() 在单个结果上失败