C# 如何在模式对话框后面保持上下文菜单可见

C# 如何在模式对话框后面保持上下文菜单可见,c#,wpf,contextmenu,C#,Wpf,Contextmenu,我正在开发一个WPF应用程序,它有一个下拉按钮。当“展开”时,它在上下文菜单中显示一个自定义UserControl。此控件包括两个按钮,一个用于打开,一个用于保存。这样做的目的是让每个按钮都显示相应的文件对话框 我的问题是,当显示对话框时,上下文菜单(以及控件)关闭。我希望在对话框打开时使其可见。同时,我希望对话框保持在前面/上方 所以我的问题是,这可以在WPF中完成吗?我怀疑这与父窗口如何处理LostFocus事件有关,但我不确定。好吧,在快速原型应用程序中直接使用Popup类后,我找不到任何

我正在开发一个WPF应用程序,它有一个下拉按钮。当“展开”时,它在上下文菜单中显示一个自定义UserControl。此控件包括两个按钮,一个用于打开,一个用于保存。这样做的目的是让每个按钮都显示相应的文件对话框

我的问题是,当显示对话框时,上下文菜单(以及控件)关闭。我希望在对话框打开时使其可见。同时,我希望对话框保持在前面/上方


所以我的问题是,这可以在WPF中完成吗?我怀疑这与父窗口如何处理LostFocus事件有关,但我不确定。

好吧,在快速原型应用程序中直接使用Popup类后,我找不到任何方法来获得我想要的行为。显示模式对话框时弹出窗口消失(StaysOpen==false),或者它在对话框顶部保持可见(StaysOpen==true)


然而,我确实找到了一个近似于我想要的行为的解决方法:在对话框关闭后,只需重新打开弹出窗口(IsOpen=true)。

好吧,在快速原型应用程序中直接使用弹出类后,我找不到任何方法来获得我想要的行为。显示模式对话框时弹出窗口消失(StaysOpen==false),或者它在对话框顶部保持可见(StaysOpen==true)


但是,我确实找到了一种近似于我想要的行为的解决方法:在对话框关闭后,只需重新打开弹出窗口(IsOpen=true)。

我不确定您为什么在这里使用上下文菜单。菜单(在大多数应用程序中)意味着允许用户选择操作(打开、保存),然后消失。如果你真的希望按钮保持“扩展”,也许弹出控件更适合你的需要。谢谢,我会研究一下。可能是上下文菜单(显示在弹出窗口中)与弹出窗口本身不同,有特殊的处理方式。我不知道为什么在这里使用上下文菜单。菜单(在大多数应用程序中)意味着允许用户选择操作(打开、保存),然后消失。如果你真的希望按钮保持“扩展”,也许弹出控件更适合你的需要。谢谢,我会研究一下。可能是上下文菜单(显示在弹出窗口中)与弹出窗口本身不同,存在特殊处理。根据文档,将StaysOpen设置为true意味着“菜单应保持打开状态,直到IsOpen属性更改为false”。当ContextMenu失去焦点时,其IsOpen属性将更改为false。不过,我还是忽略了StaysOpen属性,所以感谢您指出这一点。看起来该属性没有任何影响,请参见。您最好使用可以控制其可见性的ContextMenu以外的内容。根据文档,将StaysOpen设置为true意味着“菜单应保持打开状态,直到IsOpen属性更改为false”。当ContextMenu失去焦点时,其IsOpen属性将更改为false。不过,我还是忽略了StaysOpen属性,所以感谢您指出这一点。看起来该属性没有任何影响,请参见。您最好使用其他东西,而不是可以控制其可见性的上下文菜单。