【发布时间】:2014-11-18 11:30:12
【问题描述】:
我的应用程序中有一个 ListBox,有一个 CollectionViewSource 作为 ItemsSource。 CollectionViewSource 中有一个 SortDescription。会有很好的效果。
但现在我有一个事件将更改 SortDescription。这工作正常,但 ItemsSource 不会刷新。当我尝试使用 CollectionViewSource.View.Refresh() 更新 ItemsSource 时,我会因为 CollectionViewSource.View 为空而变成错误。
这是我使用的代码:
CollectionViewSource:
<Grid.Resources>
<CollectionViewSource Source="{Binding Path=Vertraege}" x:Key="VertraegeSource">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Vertrag.Gruppe.ID" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Grid.Resources>
列表框
<ListBox Name="lb_Vertraege" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" ItemTemplate="{StaticResource VertragsListBoxTemplate}" ItemsSource="{Binding Source={StaticResource VertraegeSource}}" ScrollViewer.VerticalScrollBarVisibility="Visible">
有任何想法,我可以在修改 SortDescription 后更新 ItemsSource 吗?目前我用这个 C# 代码试试这个:
ControlTemplate template = this["LeistungserbringerVertraegeTemplate"] as ControlTemplate;
Grid grid = template.LoadContent() as Grid;
CollectionViewSource viewSource = grid.FindResource("VertraegeSource") as CollectionViewSource;
viewSource.SortDescriptions.Clear();
viewSource.SortDescriptions.Add(new System.ComponentModel.SortDescription("VertragsID", System.ComponentModel.ListSortDirection.Ascending));
viewSource.View.Refresh();
【问题讨论】:
-
顺便说一下,ListBox 和 Grid 位于带有 CodeBehind-File 的 ResourceDictionary 中。
标签: c# wpf listbox collectionviewsource