我有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) =>
{
};