ReactiveUI-在视图模型属性更改时在视图中调用委托

时间:2019-04-20 02:01:46

标签: reactiveui

我刚刚开始使用ReactiveUI并正在开发一个小型WPF绘图应用程序。我正在使用的绘图库(SkiaSharp)不支持将图像绑定到XAML元素,而是调用XAML元素的InvalidateVisual方法,该方法会激发您响应的PaintSurface事件以绘制图像。

所以我要做的是观察视图模型的属性,并在属性更改时调用InvalidateVisual方法。

我尝试通过WhenAnyValue来观察视图模型的属性,并尝试通过在视图的构造函数中设置订阅来调用InvalidateVisual方法

this.WhenActivated(disposable =>
   {
      … // property bindings

      this.WhenAnyValue(x => ViewModel.SomeProperty)
         .Do(x => DrawingSpace.InvalidateVisual())
         .Subscribe()
         .DisposeWith(disposable);
   });

但是这会引发System.NotSupportedException不支持的表达式类型'Constant'

在观察视图模型属性并在属性更改时调用委托的视图中设置订阅的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

以下是您的问题:

this.WhenAnyValue(x => ViewModel.SomeProperty)

WhenAnyValue需要基于传入的x值的表达式。

所以在这种情况下,正确的方法是

this.WhenAnyValue(x => x.ViewModel.SomeProperty)