我的ViewModel有一个ErrorCommand。我希望在我的视图代码中订阅这个,以便在任何时候调用它我可以显示一条错误消息,如下所示:
ErrorCommand.Exectute("Error occured")
在视图中:
this.WhenAny(view => x.ViewModel.ErrorCommand, x => x.Value).Subscribe(error => DisplayError(error));
这段代码实际上并不起作用,但希望能够展示我正在努力实现的目标。我该如何正确地做到这一点?
我知道我可以使用MessageBus,但我也有类似的情况,其中MessageBus不合适。
答案 0 :(得分:2)
这种方案专门有一种方法:
this.WhenAnyObservable(x => x.ViewModel.ErrorCommand).Subscribe(x => /* ... */);
会做你所期望的,并会避免空引用
答案 1 :(得分:0)
this.WhenAny(view => x.ViewModel.ErrorCommand, x => x.Value).Subscribe(error => DisplayError(error));
只有在更改ErrorCommand属性的值时才会触发。
你想要的是这个:
ViewModel.ErrorCommand.IsExecuting.Subscribe(x=> DisplayError(x));