从字符串定义的WPF MenuItem创建单击事件

时间:2016-11-29 11:20:05

标签: c# wpf string menuitem

我使用字符串数组定义菜单的部分,我想自动为每个菜单创建点击事件。所有这些都是相同的,只是一个不同的参数。

string[] goTos = new string[] { "First", "Second", "Third" };

初始化窗口时:

        foreach (string item in goTos)
        {
            System.Windows.Controls.MenuItem goTo = new System.Windows.Controls.MenuItem();
            goTo.Header = item;
            goTo.Name = "mnu" + item;
            mnuGoTo.Items.Add(goTo);
        }

如何获取这些点击事件?

2 个答案:

答案 0 :(得分:1)

如果他们是"去做同样的事情"

我建议你使用

<MenuItem Name="MenuItems" Header="Item1">
    <i:Interaction.Triggers>
           <i:EventTrigger EventName="Click">
               <ei:CallMethodAction TargetObject="{Binding}"MethodName="Event"/>
          </i:EventTrigger>
    </i:Interaction.Triggers>
</MenuItem>
在您的View上

并将事件方法添加到Viewmodel

如果您不为项目使用MVVM,这是学习的最佳时机。

答案 1 :(得分:0)

你可以尝试这个

   string[] goTos = new string[] { "First", "Second", "Third" };
        foreach (string item in goTos)
        {
           System.Windows.Controls.MenuItem goTo = new   System.Windows.Controls.MenuItem();
            goTo.Header = item;
            goTo.Name = "mnu" + item;
            goTo.Click += new RoutedEventHandler(goTo_Click);
            mnuGoTo.Items.Add(goTo);
        }

    }

    void goTo_Click(object sender, RoutedEventArgs e)
    {
        throw new NotImplementedException();
    }