1

我运行我的应用程序并用数据填充数据网格。然后我单击某行并以下列方式处理事件:

  private void dataGridCanTabParamList_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        var buffer = sender as DataGrid;

        if ((buffer == null) || (buffer.CurrentColumn == null) )
            return;

        SetCanPropertyDesription(buffer.CurrentColumn.Header.ToString());

    }

当我第一次运行此事件时,CurrentColumn 为空,当我第二次运行此事件时,单击完全相同的位置 CurrentColumn 包含数据。第一次单击时,CurrentItem 也是空的。

为什么我在第一次点击时看不到数据?

4

2 回答 2

4

PreviewMouseDownEvent是在实际事件之前引发的隧道MouseDown事件。

MouseDown event(handled by DataGridCell)负责dataGrid中列的选择。因此,第一次您的 no 单元格因此被选中CurrentItem并且CurrentColumn当时为空。

看看它是如何工作的事件的传播 -

在此处输入图像描述

于 2012-11-15T14:03:54.887 回答
1

这是因为 CurrentColumn 和 CurrentItem 指的是选定的列/项目。当您第一次单击时,在处理隧道事件时没有选择任何内容(因此您的代码在 DataGrid 实际设置当前项之前执行)。第二次点击时,CurrentColumn 和 CurrentItem 已经设置好了。

于 2012-11-15T13:48:49.780 回答