有没有比WhileAnyValue和BindTo更好的方法来设置读写属性?

时间:2018-10-17 20:26:42

标签: 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更新读写属性的示例。

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

1 个答案:

答案 0 :(得分:0)

您可以使用Observable As Property Helper来设置视图模型中属性的值。然后您想绑定到视图。

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);

然后将视图绑定到ViewModel.SerialNumber