在后面的视图代码中绑定到IReactiveCommand

时间:2013-07-17 12:56:18

标签: viewmodel winrt-xaml reactiveui

我的ViewModel有一个ErrorCommand。我希望在我的视图代码中订阅这个,以便在任何时候调用它我可以显示一条错误消息,如下所示:

ErrorCommand.Exectute("Error occured")

在视图中:

this.WhenAny(view => x.ViewModel.ErrorCommand, x => x.Value).Subscribe(error => DisplayError(error));

这段代码实际上并不起作用,但希望能够展示我正在努力实现的目标。我该如何正确地做到这一点?

我知道我可以使用MessageBus,但我也有类似的情况,其中MessageBus不合适。

2 个答案:

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