WPF如何为绑定字符串列表的ContextMenu每个菜单项添加点击事件
你只需要在原有代码基础上补充两个部分的内容即可完成需求:
- 修改XAML中的ContextMenu定义,为自动生成的MenuItem添加点击事件绑定:
<Grid.ContextMenu> <ContextMenu Name="context"> <ContextMenu.ItemContainerStyle> <Style TargetType="MenuItem"> <!-- 给所有自动生成的菜单项绑定同一个点击事件 --> <EventSetter Event="Click" Handler="OnMenuItemClicked"/> </Style> </ContextMenu.ItemContainerStyle> </ContextMenu> </Grid.ContextMenu>
- 在后台CS代码中添加对应的点击事件处理方法:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); List<string> list = new List<string>() { "item1", "item2", "item3" }; context.ItemsSource = list; } // 新增菜单项点击处理逻辑 private void OnMenuItemClicked(object sender, RoutedEventArgs e) { if (sender is MenuItem clickedItem) { // 每个MenuItem的DataContext对应绑定的字符串列表中的单个元素 string selectedText = clickedItem.DataContext as string; MessageBox.Show(selectedText, "点击提示"); } } }
补充说明
如果你的项目采用MVVM架构,也可以通过绑定MenuItem的Command和CommandParameter属性实现相同逻辑,无需编写后台事件代码。
内容的提问来源于stack exchange,提问作者sYsTeM
相关产品推荐
相关产品推荐

