动态 WPF 上下文菜单



我有WPF和动态上下文菜单。我有菜单项 1.单击和菜单项 2.单击。

ContextMenu contextMenu = new ContextMenu();
MenuItem mItem1 = new MenuItem() { Header = "mItem1" };
mItem1.Click += new System.Windows.RoutedEventHandler(mItem1_Click);
MenuItem mItem2 = new MenuItem() { Header = "mItem2" };
mItem2.Click += new ystem.Windows.RoutedEventHandler(mItem2_Click);

现在当我打电话

 private void mItem_Click(object sender, RoutedEventArgs e)
 {
    //need to put mItem1.enabled=false and mItem2.Enabled = false    
 }

该怎么做?我是否使用contextMenu.Items something和什么? `

由于您正在动态创建MenuItem对象,因此您可以使用两个私有字段保留对它们的引用。然后,您可以直接在事件处理程序中访问它们:

public partial class MainWindow : Window
{
    MenuItem mItem1;
    MenuItem mItem2;
    public MainWindow()
    {
        InitializeComponent();
        ContextMenu contextMenu = new ContextMenu();
        mItem1 = new MenuItem() { Header = "mItem1" };
        mItem1.Click += new System.Windows.RoutedEventHandler(mItem1_Click);
        mItem2 = new MenuItem() { Header = "mItem2" };
        mItem2.Click += new System.Windows.RoutedEventHandler(mItem2_Click);
    }
    private void mItem1_Click(object sender, RoutedEventArgs e)
    {
        mItem1.IsEnabled = false;
    }
    private void mItem2_Click(object sender, RoutedEventArgs e)
    {
    }
}

另一种选择可能是使用匿名方法:

ContextMenu contextMenu = new ContextMenu();
MenuItem mItem1 = new MenuItem() { Header = "mItem1" };
MenuItem mItem2 = new MenuItem() { Header = "mItem2" };
mItem1.Click += (ss, ee) => 
{
    mItem2.IsEnabled = false;
};
mItem2.Click += (ss, ee) => 
{
};

最新更新