WhenAnyObservable выбрасывает с сообщением «Выражения индекса поддерживаются только с константами.» - PullRequest
0 голосов
/ 10 ноября 2019

Я хотел бы наблюдать путь свойства: MainViewModel.Project.SelectedDocument.Align

  1. Align является обычным свойством типа ReactiveCommand<Unit, Unit>.
  2. Project и SelectedDocument являютсяобычные свойства.

Я использую это для создания наблюдаемого (из MainViewModel):

var commandObs = this
    .WhenAnyObservable(x => x.Project.SelectedDocument.WhenAnyValue(y => y.Align));

Я получаю исключение в этой строке со следующим сообщением:

System.NotSupportedException: 'Индексные выражения поддерживаются только с константами.'

Что не так?

Поскольку для метода WhenAnyObservable требуется методНаблюдаемое свойство в конце пути свойства, я создаю его с внутренним WhenAnyValue. Это проблема? Должно ли выражение свойства быть простым выражением доступа вместо вызова метода?

В любом случае я взял код из этого ответа: ReactiveUI Как правильно использовать WhenAnyObservable

Это якобы работает :), но не для меня в этом случае.

1 Ответ

1 голос
/ 10 ноября 2019

Выражения в WhenAny должны указывать на свойство или поле. Вот почему реактивные бросают исключение. Вам нужно будет предоставить свойство IObservable или вы можете использовать операторы Select и Switch.

Например

var commandObs = this
    .WhenAnyValue => x.Project.SelectedDocument).Select(x => x.WhenAnyValue(y => y.Align)).Switch()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...