WPF DataGrid SelectedCellsChanged事件触发两次

时间:2012-07-25 14:59:59

标签: c# wpf datagrid

我订阅了

_itemsGrid.SelectedCellsChanged += Handle_SelectedCellsChangedEvent;

到WPF DataGrid SelectedCellsChanged事件以及通过

进行日志记录
private void Handle_SelectedCellsChangedEvent (object sender, SelectedCellsChangedEventArgs args)
{
    Logger.DoLogging("args.AddedCells.Count={0}, args.RemovedCells.Count={1}.", args.AddedCells.Count, args.RemovedCells.Count);
    ...
}

我看到有时候一行选择更改有两个调用:

    1。 AddedCells.Count = 4,RemovedCells.Count = 0
    2。 AddedCells.Count = 0,RemovedCells.Count = 4

现在这种行为可能是不方便或意外的,但本身没问题。 我真正的问题是,在某些情况下,数据网格会忘记取消选中已删除的单元格。 这意味着在调用和处理事件处理程序之后,仍然可以在视觉上选择前面选择的单元格。

我的假设是这种遗忘与我正在向用户显示的对话框有关。

有没有人看到数据网格“忘记”取消选择单元格?

由于 弗兰克

1 个答案:

答案 0 :(得分:3)

该事件不仅封装了通知添加到选择中的单元格的动作(即SelectedCells),而且还通知从选择中移除的单元格。这允许您对两种选择更改类型或两种选择更改类型执行操作。

我认为这符合NotifyCollectionChangedEventArgs只有一个动作的事实。因此,要显示网格的SelectedCells集合中的更改,需要添加和删除项目。此添加和删除的通知被分为不同的通知,因为事件不支持将它们显示为一个。