0

У меня есть коллекция, которую необходимо разделять на разные отфильтрованные коллекции. Это wpf, каждая отфильтрованная коллекция в новом табе. Идея здесь в том, чтобы создать для каждого таба по коллекции, если логика фильтрации сильно различается, и сделать эти коллекции проекциями одной коллекции с исходными данными. Делаю я это так:

ReceivedApplicationMessages                                          
    .ToObservableChangeSet()                                         
    .Filter( x => x.Topic != null                                    
        && x.Topic.Contains( topic ) )                               
    .Sort(SortExpressionComparer<ReceivedApplicationMessageViewModel>
        .Descending(e => e.Id))                                      
    .Bind( out _messages )                                            
    .Subscribe();                                                    
Tabs.Add( new TabItemModel( topic, _messages ) );

Теперь мне нужно реализовать поиск по отфильтрованным сообщениям. Как это сделать?

Я пытался делать так: Создаю свойство, которое потом биндится к текстбоксу.

private string _searchText;                                             
public string SearchText                                                
{                                                                       
    get { return _searchText; }                                         
    set { this.RaiseAndSetIfChanged(ref _searchText, value); }          
}  

А потом добавляю еще один фильтр:

.Filter( x => x.Topic != null                    
              && x.Topic.Contains( SearchText ) )

Но.. ничего не получается, фильтр не срабатывает. Как можно решить эту проблему?

  • 2
    В чистом WPF за это делается примерно так, внимание на SortedCollection, которых вы можете создать сколько угодно, с разными фильтрами, сортировками и прочим. – EvgeniyZ May 20 '22 at 15:12
  • 1
    ICollectionView.Filter вас спасёт. – aepot May 20 '22 at 17:43

0 Answers0