Я пытаюсь избежать обновления свойства, если изменяется другое свойство. Итак, я придумал следующее (в моей ViewModel):
this.WhenAnyObservable(
x => x.WhenAnyValue( y => y.Asset.CurrentValuation ),
x => x.Changing,
(currentValuation, changing) => changing.PropertyName != "CurrentValuationCalculated"
)
Однако ReactiveUI выдает следующую ошибку внутри ExpressionRewriter.VisitMethodCall
:
throw new NotSupportedException("Index expressions are only supported with constants.")
Если убрать строку WhenAnyValue
, все заработает. Итак, я предполагаю, что это как-то связано с выражением внутри WhenAnyValue
?
Не углубляясь в то, что на самом деле делает код ExpressionRewriter
, на что он жалуется? Я сделал какую-то простую ошибку?
Обновить
Вместо этого я ввел это:
this.WhenAnyObservable(
x => x.Asset.CurrentValuation,
x => x.Changing,
( currentValuation, changing ) => changing.PropertyName != "CurrentValuationCalculated"
)
Однако компилятор жалуется на x.Asset.CurrentValuation
и говорит:
Cannot implicitly convert type 'decimal?' to 'System.IObservable<ReactiveUI.IReactivePropertyChangedEventArgs<ReactiveUI.IReactiveObject>>'
WhenAnyValue
принимает только Property. Можете ли вы дважды проверить,y.Asset.CurrentValuation
- это собственность, а НЕ метод? - person Cinchoo   schedule 19.12.2018Asset
иAsset.CurrentValuation
являются свойствами - person Mitkins   schedule 19.12.2018Asset.CurrentValuation
? - person Cinchoo   schedule 19.12.2018x => x.WhenAnyValue( y => y.Asset.CurrentValuation )
наx => x.Asset.CurrentValuation
, посмотрите, работает ли это. - person Cinchoo   schedule 19.12.2018