我想创建一个行为类似于上下文菜单的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();
}
我也尝试过处理Deactivated事件,但它也只是出于某种原因才第一次使用。
答案 0 :(得分:4)
答案 1 :(得分:1)
不知道这会有多大帮助,但是如果你不一定需要一个Window,我使用的一种技术就是将一个UserControl放在一个Window中。
根据条件的不同,您将显示上下文菜单。在菜单中我放置了一个菜单项,在里面放置了用户控件。它的行为与您想要的完全一样。您可以在屏幕上的任何位置显示上下文菜单,并在其边界外单击将关闭它。
请参阅:http://andyonwpf.blogspot.com/2006/10/dropdownbuttons-in-wpf.html 有关如何在屏幕上的任何位置显示上下文菜单的示例。此外,您需要覆盖MenuItem的默认模板,以便鼠标悬停在菜单项上不会突出显示它。