我对C#中的反应式扩展/反应式ui和动态数据完全陌生,因此,如果我的问题不清楚的话,我因此提前道歉...
我目前面临以下问题:
我必须查看,因此有两个Viewmodel。现在,我尝试在另一个类中附加Filter()方法,同时在另一个类中创建与IObservableList SourceList的原始连接。
示例片段:
Class 1
// sourList is used to fill the ReadOnlyObservableCollection<T> while receiving data from an event
sourceList.Connect() // SourceList<T>
.Bind(out _itemsBinding) // private ReadOnlyObservableCollection<T>
.DisposeMany()
.Subscribe();
Class 2
var observableSearchPhrase = this
.WhenAnyValue(x => x.FilterExpression) // [Reactive] Property of type string
.Where(x => !string.IsNullOrWhiteSpace(x) && !string.IsNullOrEmpty(x))
.Select(FilterOnId);
sourceList.Connect().Filter(observableSearchPhrase).Subscribe(); //SourceList<T> instance from Class 1
谓词方法
private Func<T, bool> FilterOnId(string id)
{
return n => n.Id >= int.Parse(id);
}
当我运行应用程序时,我没有看到过滤器对数据流的任何调用,因此该行:
sourceList.Connect().Filter(observableSearchPhrase).Subscribe(); //SourceList<T> instance from Class 1
不执行任何操作。因此,基本上,我的方法是重用数据流,但基于FilterExpression输入动态地附加一个Filter。
如何解决?我的方法甚至指向正确的方向吗?
我对C#中的反应式扩展/反应式ui和动态数据完全陌生,因此,如果我的问题不太清楚,我会提前道歉...我目前面临以下问题:...] >
我认为您必须将值显式地传递到过滤器之后。
sourceList
.Connect()
.Filter(observableSearchPhrase)
.Bind(out _itemsBinding)
.DisposeMany()
.Subscribe();