【问题标题】:How to keep a ContextMenu visible behind a modal dialog如何保持 ContextMenu 在模态对话框后面可见
【发布时间】:2010-10-06 04:43:19
【问题描述】:

我正在开发一个带有下拉按钮的 WPF 应用程序。当“展开”时,它会在 ContextMenu 中显示一个自定义 UserControl。该控件包括两个按钮,一个用于打开,一个用于保存。这个想法是让这些按钮中的每一个都显示相应的文件对话框。

我的问题是,当显示对话框时,ContextMenu(以及控件)会关闭。我想在对话框打开时让它保持可见。同时,我希望对话框保持在它的前面/上方。

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

【问题讨论】:

  • 我不确定你为什么在这里使用 ContextMenu。菜单(在大多数应用程序中)旨在允许用户选择一个操作(打开、保存),然后消失。如果您真的希望按钮保持“展开”状态,那么 Popup 控件可能更适合您的需求。
  • 谢谢,我会调查的。可能是 ContextMenus (显示在弹出窗口中)而不是弹出窗口本身有特殊处理。

标签: c# wpf contextmenu


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    【讨论】:

    • 根据文档,将 StaysOpen 设置为 true 意味着“菜单应保持打开状态,直到 IsOpen 属性更改为 false”。当 ContextMenu 失去焦点时,其 IsOpen 属性会更改为 false。尽管如此,我还是忽略了 StaysOpen 属性,所以感谢您指出这一点。
    • 该属性似乎没有任何作用,请参阅social.msdn.microsoft.com/forums/en-US/wpf/thread/…。您最好使用其他可以控制其可见性的 ContextMenu。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多