可以忽略 ReactiveObject 的初始值吗?
Possible to ignore the initial value for a ReactiveObject?
使用 ReactiveUI,是否可以忽略给定 ReactiveObject 的初始值?
例如,我有一个我初始化的 ViewModel,然后我在 ViewModel 上 WhenAnyValue
。我立即收到通知,我选择的 属性 的值为 null
。是的,我可以 .Where(x => x != null)
避免这种情况,但有可能知道 null
以后是有价值的。
换句话说,我想在第一次更改值后开始接收通知。
我不太清楚如何做到这一点,或者是否可能。我在 WantsAnyValue/WantsAny
的源代码中看到了对 Initial Value
的引用,但我不清楚如何设置该初始值。
我想 ObservableForProperty 就是您要找的。它有一个 "skipInitial" 参数。
在这种情况下,您应该使用 ObservableForProperty。
WhenAnyValue 将立即向订阅者通知初始值以及将来的任何新值,而 ObservableForProperty 仅通知新值并跳过初始值。
根据 OP 的要求将我的评论移到答案中;)
在初始化时忽略第一个 OnNext。
this.WhenAnyValue( model => model.Field ).Skip( 1 )
使用 ReactiveUI,是否可以忽略给定 ReactiveObject 的初始值?
例如,我有一个我初始化的 ViewModel,然后我在 ViewModel 上 WhenAnyValue
。我立即收到通知,我选择的 属性 的值为 null
。是的,我可以 .Where(x => x != null)
避免这种情况,但有可能知道 null
以后是有价值的。
换句话说,我想在第一次更改值后开始接收通知。
我不太清楚如何做到这一点,或者是否可能。我在 WantsAnyValue/WantsAny
的源代码中看到了对 Initial Value
的引用,但我不清楚如何设置该初始值。
我想 ObservableForProperty 就是您要找的。它有一个 "skipInitial" 参数。
在这种情况下,您应该使用 ObservableForProperty。
WhenAnyValue 将立即向订阅者通知初始值以及将来的任何新值,而 ObservableForProperty 仅通知新值并跳过初始值。
根据 OP 的要求将我的评论移到答案中;)
在初始化时忽略第一个 OnNext。
this.WhenAnyValue( model => model.Field ).Skip( 1 )