不确定我做错了什么:
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
}
答案 0 :(得分:5)
根据名称,如果新值不同,RaiseAndSetIfChanged
将设置通过引用传递的字段。
您在调用之前设置字段值,因此永远不会有任何更改。删除它,它将工作:
private string at;
public string AT
{
get { return at; }
set { this.RaiseAndSetIfChanged(ref at, value); }
}
The documentation有一些例子。