我DataGrid
的ItemsSource
是 a ListCollectionView
,它有 aGroupDescription
和两个SortDescriptions
。在程序第一次运行时,一切正常。
但是,当ListCollectionView
基于的数据发生更改时,排序ListCollectionView
失败(而Grouping
没有)。它的行为就好像标记为“LINE A”和“LINE B”的两条线根本不存在。
public List<MyModel> Models { get; set; }
public ListCollectionView _collectionView;
public MyConstructor()
{
InitializeComponent();
GetData();
Grouping();
}
public void GetData()
{
// fill the list "Models"
}
public void Grouping()
{
// _collectionView = null;
_collectionView = new ListCollectionView(Models);
_collectionView.GroupDescriptions.Add(new PropertyGroupDescription("MyModelSupplier"));
_collectionView.SortDescriptions.Add(new SortDescription("MyModelSupplier", ListSortDirection.Ascending)); // LINE A
_collectionView.SortDescriptions.Add(new SortDescription("MyModelName", ListSortDirection.Ascending)); // LINE B
ModelControl.ItemsSource = _collectionView;
}
private void OnDataChanged (object sender, EventArgs e)
{
// Save the Data to the Database
//...
// Retrieve the Data
GetData();
// Group it again
Grouping();
}
总结一下:
在启动时,一切看起来和行为都像它应该的那样。更改数据,将其保存到DataBase
并再次检索它也可以工作。仅对检索到的分组数据进行排序将不起作用(列表按 MyModel 类的第一个属性(即 MyModelName ...而不是 MyModelSupplier 排序 - 就像默认值一样),而不是像一开始那样) .
编辑: 这是一个已知的错误/缺失功能(直到 .NET 4.6.2)。可以在这里找到几个建议(我选择了最后一个解决方案):