我想做一个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();
}我也试着只处理停用的事件,但由于某些原因,它也只在第一次工作。
发布于 2008-12-11 21:37:54
PopUp是否不足以满足您的需求?它有一个StaysOpen属性,可以让它按照您所描述的那样工作。
发布于 2008-12-11 21:49:13
我不知道这会有多大帮助,但如果你不一定需要一个窗口,我使用的一种技术是在窗口中放置一个UserControl。
根据具体情况,您将显示上下文菜单。在菜单中,我放置了一个菜单项,并在其中放置了用户控件。它的行为将完全像你想要的那样。您可以在屏幕上的任何位置显示上下文菜单,在其边界之外单击将关闭该菜单。
有关如何在屏幕上的任意位置显示上下文菜单的示例,请参阅:http://andyonwpf.blogspot.com/2006/10/dropdownbuttons-in-wpf.html。此外,您还需要覆盖MenuItem的默认模板,以便将鼠标悬停在菜单项上时不会突出显示它。
https://stackoverflow.com/questions/361024
复制相似问题