不确定我做错了什么:
private at = "0";
public string AT
{
get
{
return aT;
}
set
{
aT = value;
this.RaiseAndSetIfChanged(ref aT, value);
}
}
Run Code Online (Sandbox Code Playgroud)
使用ViewModel进行设置AT = "Something",调用Raise并最初设置View.但是,当AT被连续调用(每秒至少一次更新)时,在初始设置(aT的原始值)之后不会更新
this.WhenAnyValue(x => x.ViewModel.AT).Subscribe(x => Debug.WriteLine("Change in AT:" + x)); // using this to debug
Run Code Online (Sandbox Code Playgroud)
似乎有效的一段时间是这样的:
set
{
aT = value;
this.RaisePropertyChanged();
}
Run Code Online (Sandbox Code Playgroud)
但是,在成功获得一个值(除了初始设置)之后,它崩溃了!我究竟做错了什么?
编辑:
在异步事件处理程序中更改此属性.在断点时,每次都会更改属性.这种情况大约每秒1次:
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
}
Run Code Online (Sandbox Code Playgroud)
根据名称,如果新值不同,RaiseAndSetIfChanged将设置通过引用传递的字段.
您在调用之前设置了字段值,因此永远不会有任何更改.删除它,它将工作:
private string at;
public string AT
{
get { return at; }
set { this.RaiseAndSetIfChanged(ref at, value); }
}
Run Code Online (Sandbox Code Playgroud)
该文档有一些例子.
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |