WPF自定义文本框上下文菜单打开问题
我写的自定义控件有一个问题,当我以编程方式连接它时,没有触发它的ContextMenuOpening事件。该控件基本上是标准文本框的包装:WPF自定义文本框上下文菜单打开问题,wpf,contextmenu,Wpf,Contextmenu,我写的自定义控件有一个问题,当我以编程方式连接它时,没有触发它的ContextMenuOpening事件。该控件基本上是标准文本框的包装: public class MyTextBox : TextBox { public MyTextBox() { this.ContextMenuOpening += new ContextMenuEventHandler(MyTextBox_ContextMenuOpening); } void MyText
public class MyTextBox : TextBox
{
public MyTextBox()
{
this.ContextMenuOpening += new ContextMenuEventHandler(MyTextBox_ContextMenuOpening);
}
void MyTextBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
MessageBox.Show("ContextMenuOpening event fired");
}
}
XAML也没有任何可疑之处:
<local:MyTextBox Height="25" Width="300"/>
然而,由于某种原因,我永远无法让事件发生。我试图截取上下文菜单,以便对其进行更改(它是上下文敏感的),并试图避免在使用控件的任何地方都必须连接事件-当然这是可能的?事实证明,在创建对象时,您需要明确地将上下文菜单设置为null:
public MyTextBox()
{
this.ContextMenu = null;
this.Initialized += (s, e) =>
ContextMenuOpening += new ContextMenuEventHandler(MyTextBox_ContextMenuOpening);
}
然后它就可以工作了:)我检查过了,上下文菜单的“新建”功能(实例化它而不是将其设置为null)也可以工作(而且感觉不那么奇怪!)