я сделал заявление, что получить какое-то событие запланировано из Интернета, это событие вставляется внутри ListView
, этот список организовать содержание в GroupDescription
так:Фильтр ObservableCollection в пользовательском интерфейсе?
<CollectionViewSource Source="{Binding Matches}" x:Key="GroupedItems">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="MatchNation" />
<PropertyGroupDescription PropertyName="MatchLeague" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
Теперь, я имею в TextBox
где использование может поиск определенного элемента внутри коллекции Matches
, то, что я пытаюсь достичь, - это фильтр коллекции с заданной строкой search
, предоставленной пользователем в TextBox
.
Что я сейчас делаю, это механик, который использует linq
, создайте резервную копию коллекции и удалите все элементы, которые не соответствуют строке пользователя search
, но я заметил, что этот код слишком тяжелый, а также слишком много кода для достижения простого фильтра пользовательского интерфейса.
Мне интересно, возможно ли создать что-то вроде xaml. Таким образом, по существу у меня есть привязка в xaml к свойству, которое получает строку поиска, предоставленную TextBox
, и когда значение изменилось, коллекция Matches
будет отфильтрована по искомому тексту, все это через xaml.
Возможно ли это?
Пример
Предметы avaialble в Matches
:
- Здравствуйте
- Мир
Поиск пользователя в TextBox
=> Hello:
в ListView
будет отображаться только Hello
.
Я должен объявить ObservableCollection статичным, если я использую .GetDefaultView, почему? – AgainMe
Вам не нужно статически ставить его.Это должно быть примерно так: 'ObservableCollection _matches = new ObservableCollection (); var cvs = CollectoinViewSource.GetDefaultView (_matches); cvs.Filter = ... 'Метод GetDefaultView() является статическим, но вы можете передать ему нестатический аргумент. –
rmc00
Хорошо, to .Filter Мне нужно передать свойство, как 'FilterString', как в примере? – AgainMe