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

ReactiveUI - Invoke delegate in view on view model property change

我刚刚开始使用 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'

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

以下是您的问题:

this.WhenAnyValue(x => ViewModel.SomeProperty)

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

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

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