ReactiveUI:属性未更新

时间:2016-04-12 03:42:56

标签: c# reactiveui

不确定我做错了什么:

       private at = "0";
       public string AT
        {
            get
            {
                return aT;
            }
            set
            {
                aT = value;
                this.RaiseAndSetIfChanged(ref aT, value);
            }
        }

使用AT = "Something"在ViewModel上设置此项,将调用Raise并最初设置View。但是,当AT被连续调用(每秒至少一次更新)时,在初始设置(aT的原始值)之后不会更新

this.WhenAnyValue(x => x.ViewModel.AT).Subscribe(x => Debug.WriteLine("Change in AT:" + x)); // using this to debug

一段时间似乎有效:

        set
        {
            aT = value;
            this.RaisePropertyChanged();
        }

然而,在成功获得一个值(除了初始设置)之后,它崩溃了!我做错了什么?

编辑:

在异步事件处理程序中更改此属性。在断点时,每次都会更改属性。这种情况每秒发生一次:

private async void ValueChanged(Something sender, SomeArgs args)
        {
            //Computation code here
            AT= string.Format("{0:0.0####}", ATOrigin);
            // Property is set - I checked
           // More code here
        }

1 个答案:

答案 0 :(得分:5)

根据名称,如果新值不同,RaiseAndSetIfChanged设置通过引用传递的字段

您在调用之前设置字段值,因此永远不会有任何更改。删除它,它将工作:

private string at;

public string AT 
{
    get { return at; }
    set { this.RaiseAndSetIfChanged(ref at, value); }
}

The documentation有一些例子。