首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用list在每个ContexMenu项上添加点击事件?

如何使用list在每个ContexMenu项上添加点击事件?
EN

Stack Overflow用户
提问于 2021-11-15 15:13:57
回答 1查看 36关注 0票数 0

我正在尝试将字符串列表转换为ContexMenu。如何将单击事件应用于每个项目,并显示带有所单击项目文本的消息?

政务司司长

代码语言:javascript
运行
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<string> list = new List<string>()
        {
            "item1", "item2", "item3"
        };
        context.ItemsSource = list;
    }
}

XAML

代码语言:javascript
运行
复制
<Window x:Class="wpftest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:wpftest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid Name="grid" Background="Gray">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
        </Grid.ColumnDefinitions>
        <Grid.ContextMenu>
            <ContextMenu Name="context"/>
        </Grid.ContextMenu>
    </Grid>
</Window>

图像

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 15:28:11

您可以通过两种方式完成此操作。

通过从代码隐藏构建ContextMenu

代码语言:javascript
运行
复制
// ----- XAML part
<Grid Name="grid" Background="Gray">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100"/>
    </Grid.ColumnDefinitions>
</Grid>

// ----- Code part 

// Initialize context menu
var contextMenu = new ContextMenu();
      
// Fill context menu with items  
for (int i = 1; i <= 3; i++)
{
    // Create simple item with some text on it
    var menuItem = new MenuItem { Header = "Item #" + i };
    // Add click handler
    menuItem.Click += delegate { _ = MessageBox.Show(menuItem.Header + " was clicked"); };
    // Add item to menu
    contextMenu.Items.Add(menuItem);
}

// Set context menu to grid
grid.ContextMenu = contextMenu;

通过为每个MenuItem设置XAML中的单击处理程序

代码语言:javascript
运行
复制
// ----- XAML part
<Grid Name="grid" Background="Gray">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100"/>
    </Grid.ColumnDefinitions>
    <Grid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Item #1" Click="ContextMenuItem_Click"/>
            <MenuItem Header="Item #2" Click="ContextMenuItem_Click"/>
            <MenuItem Header="Item #3" Click="ContextMenuItem_Click"/>
        </ContextMenu>
    </Grid.ContextMenu>
</Grid>

// ----- Code part

// One click handler for each MenuItem.
// You can differ MenuItems by Header property for example
private void ContextMenuItem_Click(object sender, RoutedEventArgs e)
{
    if (sender is MenuItem menuItem)
        _ = MessageBox.Show(menuItem.Header + " was clicked");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69976653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档