WhenAnyObservable引发消息“仅常数支持索引表达式。”]

问题描述 投票:0回答:1

我想观察一个属性路径:MainViewModel.Project.SelectedDocument.Align

  1. [Align是类型为ReactiveCommand<Unit, Unit>的常规属性。
  2. [ProjectSelectedDocument是常规属性。
  3. 我正在使用它来创建可观察对象(来自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 的常规属性。 Project和SelectedDocument是常规的...

c# system.reactive reactiveui
1个回答
0
投票

WhenAny中的表达式必须指向属性或字段。这就是为什么reactui抛出异常。您将需要公开IObservable属性,或者可以使用Select和Switch语句。

例如

© www.soinside.com 2019 - 2024. All rights reserved.