【问题标题】:How to remove the System Menu in WPF?如何删除 WPF 中的系统菜单?
【发布时间】:2011-07-11 12:29:38
【问题描述】:

根据这个MSDN page,如果我使用的是Window,那么我可以通过将左上角的控制框设置为false来禁用它。像这样:this.ControlBox = false;

控制框有最大化、最小化、恢复和关闭选项

但由于我使用的是 RibbonWindow 而不是 Window,在这种情况下如何禁用控制框?

This question 非常相关,但我一直希望禁用 SystemMenu,而不仅仅是为了阻止 Alt+Space。这是因为(我认为)左上角 SystemMenu 的操作侦听器阻止了我的 XAML 中的可点击 UI 元素。

我应该注意,这不是 Windows Server 2003 的问题,但是当应用程序在 Windows 7 中打开时,SystemMenu/ControlBox 会干扰左上角的 UI 元素。

此外,我发现干扰系统菜单通常会导致应用程序右上角的按钮被停用,但我不希望这种情况发生。

感谢link Eammonn。我认为那个人试图做的是禁用右上角的 [X] 按钮,而不是左上角的菜单,但我可能是错的。我认为它不起作用的原因是他们使用的是<Window x:Class=,而我使用的是<dc:RibbonWindow x:Class=。这有什么不同吗?

【问题讨论】:

  • RibbonWindow 来自哪里(我知道至少有 2 个不同的库提供此功能,只是想知道您使用的是哪一个)。
  • Microsoft.Windows.Control.Ribbon.RibbonWindow
  • Eamonn 的回答也应该适用于 RibbonWindow,因为它只是 Window 的扩展。 Office 2010 重新引入了控制框(带有图标)。 Office 2007 已将其隐藏,以支持球体。这会干扰球体或快速访问工具栏吗?
  • 是的,我相信是的。问题是当用户在某个地方点击球体时,会弹出快速访问工具栏。

标签: c# .net wpf visual-studio xaml


【解决方案1】:

WPF 窗口不是 System.Windows.Forms 对象,因此 this.ControlBox = false 无论如何都不起作用。在 wpf 中没有明确的属性可以做到这一点,但请参阅这篇文章

http://winsharp93.wordpress.com/2009/07/21/wpf-hide-the-window-buttons-minimize-restore-and-close-and-the-icon-of-a-window/

它描述了如何删除 WPF 版本的控制框。

WPF 控件派生自 System.Windows.Controls 而不是 System.Windows.Forms

【讨论】:

  • 谢谢!你知道WPF窗口到底是什么类型的对象吗?
  • 具体来说,它是一个“包装”原生窗口(即 HWND)的 WPF 控件。
【解决方案2】:

你设置你的窗口的

<Window ...
    WindowStyle="ToolWindow"
    ResizeMode="NoResize">

祝你好运。

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多