CollectionViewSource からデータを取得する ListBox を設定しようとしています。私がやりたいことは、基になるデータ ソースを更新すると、ListBox も更新されることです。私のXamlは次のようになります...
<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 を使用する理由は、基になるオブジェクトのプロパティに基づいてリストを並べ替えるためです。