C#反应式ui动态过滤器

问题描述 投票:0回答:1

我对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和动态数据完全陌生,因此,如果我的问题不太清楚,我会提前道歉...我目前面临以下问题:...] >

c# reactive-programming dynamic-data reactiveui
1个回答
0
投票

我认为您必须将值显式地传递到过滤器之后。

sourceList .Connect() .Filter(observableSearchPhrase) .Bind(out _itemsBinding) .DisposeMany() .Subscribe();

© www.soinside.com 2019 - 2024. All rights reserved.