如何根据右键单击哪个WPF DataGrid行添加ContextMenu?

DTa*_*tor 3 wpf datagrid contextmenu row right-click

我需要在ContextMenu中显示不同的选项,具体取决于右键单击WPF DataGrid的哪一行.我最初的想法是通过绑定或处理鼠标点击事件来实现这一目标,但到目前为止我还没有成功使用这两种策略.非常感激任何的帮助!

谢谢!

丹尼斯

cst*_*ick 5

您可以处理DataGrid的ContextMenuOpening事件,并根据路由事件的原始源调整上下文菜单.

下面是一个示例,其中如果原始源的数据上下文是Inventory类型,则显示上下文菜单,否则我不会通过处理事件来显示上下文菜单.

Private Sub InventoriesDataGrid_ContextMenuOpening( _
    ByVal sender As Object, _
    ByVal e As System.Windows.Controls.ContextMenuEventArgs) Handles _
    InventoriesDataGrid.ContextMenuOpening

    Dim context = DirectCast(e.OriginalSource, System.Windows.FrameworkElement).DataContext

    If TypeOf context Is Inventory Then
        InventoriesDataGrid.ContextMenu = InventoriesDataGrid.Resources("DefaultContextMenu")
    Else
        e.Handled = True 'Do not show context menu.
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

我相信现在帮助你已经太晚了,但是如果现在还为时已晚,并且遇到其他任何人.