2011-10-08 341 views
0

我想自己处理所有排序,所以在Datagrid的_Sorting事件中,我设置了e.Handled = True。但是WPF仍然触发集合刷新,并且似乎忽略了Handled标志。WPF Datagrid:取消排序事件(WPF Bug?)

当我看到堆栈跟踪,我看到:

PresentationFramework.dll!MS.Internal.Data.CollectionViewProxy.Refresh() + 0x2a bytes 
PresentationFramework.dll!System.Windows.Controls.ItemCollection.RefreshOverride() + 0x53 bytes 
PresentationFramework.dll!System.Windows.Data.CollectionView.Refresh() + 0x44 bytes 
PresentationFramework.dll!System.Windows.Controls.DataGrid.PerformSort(System.Windows.Controls.DataGridColumn sortColumn) + 0xbe bytes 
PresentationFramework.dll!System.Windows.Controls.Primitives.DataGridColumnHeader.OnClick() + 0x5d bytes  

这是WPF中的错误?因为Handled属性不应该阻止这些调用被触发吗?

回答

0

为什么不考虑使用DataGrid.CanUserSortColumns/DataGridColumn.CanUserSort属性设置为false?

您要做的事可能不会与Sorting事件相关联。

+0

因为如果我将CanUserSort设置为false,则列变为“不可点击”。他们没有得到焦点或显示排序箭头,他们变得静止。我想为我的集合实现自定义排序,而不是禁用排序UI。 – Muis