2010-04-21 119 views
0

我已經寫了一個自定義控件的問題,當我以編程方式將其掛起時,未觸發它的ContextMenuOpening事件。中的控制基本上爲標準文本框的包裝:WPF自定義文本框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"/> 

出於某種原因,雖然,我永遠無法得到的事件觸發。我試圖攔截上下文菜單,所以我可以改變它(它是上下文敏感的),並且實際上是試圖避免在使用控制的任何地方連接事件 - 當然這是可能的?

回答

2

原來你需要顯式設置的ContextMenu創建對象時爲null:

public MyTextBox() 
{ 
    this.ContextMenu = null; 
    this.Initialized += (s, e) => 
     ContextMenuOpening += new ContextMenuEventHandler(MyTextBox_ContextMenuOpening); 
} 

然後它的工作原理治療:)