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

Create click event from WPF MenuItem defined by a string

我用一个字符串数组定义了菜单的一部分,我想为每个菜单自动创建点击事件。他们都要做同样的事情,只是参数不同。

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

初始化 window 时:

        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);
        }

如何获得这些点击事件?

你可以试试这个

   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();
    }

如果他们是 "going to to the same thing"

我建议你使用

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

在您的视图上并将事件方法添加到您的视图模型

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