我尝试使用CollectionViewSource来对WPF DataGrid中显示的项目进行排序。 项目本身通过ObservableCollection通过视图模型给出。
Observable Collection本身在运行时会发生变化(例如,对于新项目,它不是.Clear()ed,但是给出了一个全新的ObservableCollection)。
视图模型:
public class ViewModel
{
public ObservableCollection<Item> Items
{
get { return _Items; }
set { this.SetAndRaiseIfChanged(ref _Items, value); }
}
}
public class Item
{
public DateTime Time { get { return ....; } }
}
查看:
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding Items}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Time" Direction="Descending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Grid.Resources>
<DataGrid ItemsSource="{Binding Source={StaticResource cvs}}"/>
</Grid>
现在 - 这不起作用。这些项目正在DataGrid中显示,但根本不会应用任何排序。
我已经查看了视图并在运行时钻入DataGrid;它的ItemsSource属性是ListCollectionView类型,它根本没有任何SortDescriptions。
有没有人知道ListCollectionView的来源,以及为什么我的XAML中的SortDescriptiosn没有应用?
谢谢!