У меня есть ListView
с группировкой. Я хочу отображать элементы в этом ListView
в соответствии с текстом, введенным в TextBox
. Существует много учебников по фильтрации ListView
и CollectionViewSource
, но они предназначены для WPF
не UWP
. Что я делаю:UWP - Фильтрация ListView с группировкой
Мои ListView
:
<ListView x:Name="ContactsListView"
ItemTemplate="{StaticResource ContactsTemplate}"
ItemsSource="{x:Bind ContactsViewSource.View}"
SelectionMode="Single"
ShowsScrollingPlaceholders="True" >
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="data:GroupingItem">
<TextBlock Text="{x:Bind Key}"
Foreground="Blue"
Style="{ThemeResource TitleTextBlockStyle}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
Мой CollectionViewSource
определяется в Page.Resources
:
<CollectionViewSource x:Name="ContactsViewSource"
x:Key="src"
IsSourceGrouped="True" />
Я создал обработчик по textChanged
событий для TextBox
:
private void SearchBox_TextChanged(object sender, TextChangedEventArgs e) {
....
//here I filter ListView items and add them to CollectionViewSource
ContactsViewSource.Source = filteredValues;
}
Но нет изменение. ListView не обновляется. Я не знаю, что делать. Я не смог найти решение этой проблемы для UWP
.
При назначении данных в MainPage
constructor
отображается информация. Когда я не назначу данные в constructor
, но в SearchBox_TextChanged
в ListView
нет данных.