Я пытаюсь настроить ListBox, который получает его данные из CollectionViewSource. Я хочу, чтобы, когда я обновляю базовый источник данных, ListBox также обновляется. Моя Xaml выглядит так ...Observable CollectionViewSource
<Window.Resources>
<ObjectDataProvider x:Key="AppTests" ObjectType="{x:Type Application:AppTestProvider}" MethodName="GetAppTests" />
<CollectionViewSource x:Key="cvs" Source="{StaticResource AppTests}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Priority" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<ListBox x:Name="TestList" ItemsSource="{Binding Source={StaticResource cvs}}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Это показывает штраф данных, но если я изменить исходные данные, то эти изменения не отображаются на сетке, пока я не вызвать метод cvs.View.Refresh()
в коде позади.
Как я могу сделать это «наблюдаемым», чтобы изменения произошли автоматически?
Примечание. Причиной использования CVS было предоставление сортировки в список на основе свойства в базовых объектах.
Используйте ObservableCollection. – Nitesh
После публикации этого сообщения я также прочитал, что CollectionViewSource не видит изменений. Это правильно и может ли это повлиять на то, что я делаю? – Remotec
Нет, это неправда. «CollectionViewSource» прослушивает коллекцию, если ее использует исходная коллекция. –