2008-12-11 43 views
2

我想創建一個WPF窗口,其行爲與上下文菜單相似。因此,例如 - 當我顯示wpf窗口時,我希望它是最上面的窗口,如果用戶單擊窗口外的任何內容,我希望窗口再次隱藏。使一個WPF窗口像上下文菜單一樣(正確顯示/隱藏)

到目前爲止,我已經嘗試了很多技巧,但是我發現這裏只顯示了一個我發現的有點作品。它的工作原理是首次,但從來沒有再之後:

public TheWindow() 
{ 
    InitializeComponent(); 
    this.Topmost = true; 
} 

void ShowMe() 
{ 
    this.Show(); 
    this.CaptureMouse(); 
} 

void Window_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    /// TODO: Check if they clicked outside the window here! 
    this.ReleaseMouseCapture(); 
    this.Hide(); 
} 

我也嘗試了處理停用事件,但它也只能在第一時間由於某種原因。

回答

4

PopUp不足以滿足您的需求嗎?它有一個StaysOpen屬性,可以讓它像你描述的那樣行事。

1

不知道這將是多麼有用,但如果你不一定需要一個窗口,我已經使用的一種技術是將一個UserControl放置在一個窗口內。

根據任何條件,你會顯示一個上下文菜單。在菜單裏面我放置了一個菜單項,裏面放置了用戶控件。它會表現得和你想要的完全一樣。您可以在屏幕上的任何位置顯示上下文菜單,並在其邊界外單擊將關閉它。

請參閱:http://andyonwpf.blogspot.com/2006/10/dropdownbuttons-in-wpf.html 瞭解如何在屏幕上的任何位置顯示上下文菜單的示例。此外,您需要覆蓋MenuItem的默認模板,以便鼠標懸停在菜單項上不會突出顯示它。