我刚刚开始使用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'
在观察视图模型属性并在属性更改时调用委托的视图中设置订阅的正确方法是什么?
答案 0 :(得分:0)
以下是您的问题:
this.WhenAnyValue(x => ViewModel.SomeProperty)
WhenAnyValue需要基于传入的x
值的表达式。
所以在这种情况下,正确的方法是
this.WhenAnyValue(x => x.ViewModel.SomeProperty)