Wpf 如何将单击事件处理程序添加到DataGrid上下文菜单?

Wpf 如何将单击事件处理程序添加到DataGrid上下文菜单?,wpf,xaml,datagrid,event-handling,contextmenu,Wpf,Xaml,Datagrid,Event Handling,Contextmenu,如何将单击事件处理程序添加到DataGrid动态生成的ContextMenu 我看到有人说使用“Tag”属性,但我不确定如何在XAML中添加代码,或者是否需要在代码隐藏中添加代码 谢谢 <DataGrid ItemsSource="{Binding MyModules}" AutoGenerateColumns="False" x:Name="dataGrid"> <DataGrid.ItemContaine

如何将单击事件处理程序添加到DataGrid动态生成的ContextMenu

我看到有人说使用“Tag”属性,但我不确定如何在XAML中添加代码,或者是否需要在代码隐藏中添加代码

谢谢

<DataGrid ItemsSource="{Binding MyModules}" AutoGenerateColumns="False" x:Name="dataGrid">

    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu ItemsSource="{Binding Configuration.Commands}">
                        <ContextMenu.ItemContainerStyle>
                            <Style TargetType="MenuItem">
                                <Setter Property="Header" Value="{Binding Caption}" />
                                <!-- Instead of the following two lines where I set the CommandAction and CommandParameter, I need to have a Click Event Handler. How can I achieve that? -->
                                <!-- <Setter Property="Command" Value="{Binding CommandAction}" />
                                <Setter Property="CommandParameter" Value="{Binding CommandId}" /> -->
                            </Style>
                        </ContextMenu.ItemContainerStyle>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.ItemContainerStyle>
    
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Module Name" Width="*" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Configuration.Name}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="Module Caption" Width="3*" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Configuration.Description}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>

</DataGrid>

您可以使用
事件设置器

<Setter Property="ContextMenu">
    <Setter.Value>
        <ContextMenu ItemsSource="{Binding Configuration.Commands}">
            <ContextMenu.ItemContainerStyle>
                <Style TargetType="MenuItem">
                    <Setter Property="Header" Value="{Binding Caption}" />
                    <EventSetter Event="Click" Handler="MenuItem_Click" />
                </Style>
            </ContextMenu.ItemContainerStyle>
        </ContextMenu>
    </Setter.Value>
</Setter>

正是我所需要的。非常感谢。