C# 使WPF窗口的行为类似于上下文菜单(正确显示/隐藏它)
我想创建一个WPF窗口,其行为类似于上下文菜单 例如,当我显示wpf窗口时,我希望它是最上面的窗口,从那里开始,如果用户单击该窗口之外的任何内容,我希望该窗口再次被隐藏 到目前为止,我已经尝试了很多技术,但我发现唯一一种可以起作用的技术显示在这里。它第一次起作用,但此后再也不会起作用:C# 使WPF窗口的行为类似于上下文菜单(正确显示/隐藏它),c#,.net,wpf,winapi,C#,.net,Wpf,Winapi,我想创建一个WPF窗口,其行为类似于上下文菜单 例如,当我显示wpf窗口时,我希望它是最上面的窗口,从那里开始,如果用户单击该窗口之外的任何内容,我希望该窗口再次被隐藏 到目前为止,我已经尝试了很多技术,但我发现唯一一种可以起作用的技术显示在这里。它第一次起作用,但此后再也不会起作用: public TheWindow() { InitializeComponent(); this.Topmost = true; } void ShowMe() { this.Show(
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();
}
我也尝试过只处理停用的事件,但由于某些原因,它也只在第一次工作。不足以满足您的需要吗?它有一个属性,可以让它像您描述的那样工作。我不知道这会有多大帮助,但如果您不一定需要窗口,我使用的一种技术是将UserControl放置在窗口中 根据任何条件,都会显示关联菜单。在菜单中,我放置了一个菜单项,并在其中放置了用户控件。它的行为将完全符合您的要求。您可以在屏幕上的任何位置显示关联菜单,在其边界外单击将关闭它 见:
例如,如何在屏幕上的任何位置显示上下文菜单。此外,您还需要覆盖菜单项的默认模板,以便将鼠标悬停在菜单项上时不会突出显示该菜单项。您将无法在该弹出窗口中设置焦点,也无法使用键盘在其中导航。