右键单击事件中的DataGrid行选择未选择行

时间:2019-08-02 13:16:58

标签: c# wpf datagrid

我有一个DataGrid和一个ContextMenu。我想要的是在弹出上下文菜单(通过右键单击)时,我想要获取所选行上的列数据。此数据将用于确认是否应启用某些上下文菜单选项。

所以我尝试了MouseRightButtonUp事件处理程序,但最终得到了NullReferenceException

<DataGrid MouseRightButtonUp="DataGrid_MouseRightButtonUp">

private void DataGrid_MouseRightButtonUp(object sender, MouseButtonEventArgs e) {
MessageBox.Show(((DataRowView)DataGrid.SelectedItem).Row.ItemArray[0].ToString());
}

然后,我尝试了SelectionChanged事件,该事件最终可以正常工作,但是如果连续多次选择该事件,则不会连续运行多次。我需要这样,以便每当右键单击一行时,事件就会触发并返回列数据。同样,不需要点击鼠标左键也会触发此事件。

目前我有哪些可用选项?

1 个答案:

答案 0 :(得分:0)

您可以尝试直接在DataGridRow上设置MouseRightClick事件处理程序,如下所示:

<DataGrid.Resources>
    <Style TargetType="DataGridRow">
      <EventSetter Event="MouseRightButtonUp" Handler="YourHandler"/>
    </Style>
</DataGrid.Resources>

这样,您就不必尝试查找被单击的行,从而限制了发生错误的可能性。您将直接有权访问事件处理程序中的行。

希望有帮助!

相关问题