Wpf 如何将单击事件处理程序添加到DataGrid上下文菜单?
如何将单击事件处理程序添加到DataGrid动态生成的ContextMenu 我看到有人说使用“Tag”属性,但我不确定如何在XAML中添加代码,或者是否需要在代码隐藏中添加代码 谢谢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 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>
正是我所需要的。非常感谢。