我想观察一个属性路径:MainViewModel.Project.SelectedDocument.Align
Align
是类型为ReactiveCommand<Unit, Unit>
的常规属性。Project
和SelectedDocument
是常规属性。我正在使用它来创建可观察对象(来自MainViewModel
):
var commandObs = this .WhenAnyObservable(x => x.Project.SelectedDocument.WhenAnyValue(y => y.Align));
我在此行出现异常,并显示以下消息:
System.NotSupportedException:'仅常量支持索引表达式。'
怎么了?
由于WhenAnyObservable
方法在属性路径的末尾需要一个可观察的属性,因此我正在使用内部WhileAnyValue创建它。那是问题吗?属性表达式应该使用简单的访问表达式而不是方法调用吗?
无论如何,我从以下答案中获取了代码:ReactiveUI How to use WhenAnyObservable properly
应该可以用:),但在这种情况下不适合我。
我想观察属性路径:MainViewModel.Project.SelectedDocument.Align Align是ReactiveCommand
WhenAny中的表达式必须指向属性或字段。这就是为什么reactui抛出异常。您将需要公开IObservable属性,或者可以使用Select和Switch语句。
例如