Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF自定义文本框上下文菜单打开问题_Wpf_Contextmenu - Fatal编程技术网

WPF自定义文本框上下文菜单打开问题

WPF自定义文本框上下文菜单打开问题,wpf,contextmenu,Wpf,Contextmenu,我写的自定义控件有一个问题,当我以编程方式连接它时,没有触发它的ContextMenuOpening事件。该控件基本上是标准文本框的包装: public class MyTextBox : TextBox { public MyTextBox() { this.ContextMenuOpening += new ContextMenuEventHandler(MyTextBox_ContextMenuOpening); } void MyText

我写的自定义控件有一个问题,当我以编程方式连接它时,没有触发它的ContextMenuOpening事件。该控件基本上是标准文本框的包装:

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)也可以工作(而且感觉不那么奇怪!)