But*_*ers 1 c# mvvm system.reactive reactiveui
我试图ObservableForProperty多个反应观察序列.这是代码.
using ReactiveUI;
public ReactiveUIDerivedClass<T> FName {get; private set;}
public ReactiveUIDerivedClass<T> MName {get; private set;}
public ReactiveUIDerivedClass<T> LName {get; private set;}
FName = new ReactiveUIDerivedClass<T>();
MName = new ReactiveUIDerivedClass<T>();
LName = new ReactiveUIDerivedClass<T>();
Run Code Online (Sandbox Code Playgroud)
这里T是System.String.因此,以下方法有效.
private void ObserveForPropertyInThreeFields()
{
Observable.CombineLatest(FName.ObservableForProperty(p => p.Value),
MName.ObservableForProperty(p => p.Value),
LName.ObservableForProperty(p => p.Value))
.Where(p => p.All(v => !string.IsNullOrWhiteSpace(v.Value)))
.Subscribe(p => { /* do some stuff */ } );
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望获得类似的结果,其中属性的T有三种不同的类型.当我使用Observable.CombineLatest时,我收到以下错误消息.
无法从用法中推断出方法'System.Reactive.Linq.Observable.CombineLatest(System.IObservable,System.IObservable,System.Func)'的类型参数.尝试显式指定类型参数.
有关ObserveForProperty如何更改不同类型的三个属性的任何想法?
这实际上已经内置于ReactiveUI,使用了一个更好的方法ObservableForProperty,称为WhenAnyValue:
this.WhenAnyValue(x => x.FName, x => x.MName, x => x.LName,
(first,middle,last) => new { first, middle, last });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |