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

The*_*Zab 1 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());
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试了SelectionChanged最终有效的事件,但是,如果多次选择它,它不会连续工作一次以上。我需要它,以便每次右键单击一行时,该事件都会触发并返回列数据。此外,此事件是在不需要的左键单击时触发的。

此时我可以选择哪些选项?

mga*_*ant 5

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

<DataGrid.Resources>
    <Style TargetType="DataGridRow">
      <EventSetter Event="MouseRightButtonUp" Handler="YourHandler"/>
    </Style>
</DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)

这样,您就不必尝试查找单击的行,这限制了出现错误的可能性。您将可以直接访问事件处理程序中的行。

希望有帮助!