【问题标题】:WPF Remove MenuItems from TitleBar context menuWPF 从 TitleBar 上下文菜单中删除 MenuItems
【发布时间】:2011-10-26 01:39:11
【问题描述】:

我能够使用窗口处理程序等添加项目,但我还想删除已经存在的项目(我们主应用程序内的窗口工具窗口,我们不希望所有这些选项都存在)。在下面的屏幕截图中,它显示了我添加的和要删除的(几乎全部)。让我知道是否有办法做到这一点。

编辑:

或者更好的是,如何使用 XAML 放置我自己的上下文菜单(如果可能的话)。但我不想失去标题栏或航空效果。

谢谢!

【问题讨论】:

  • 我希望做同样的事情。因此,如果您有解决方案,我很想听听您的解决方案。
  • @bsh152s 抱歉,没有找到方法,我们仍然有所有这些菜单项。

标签: wpf


【解决方案1】:

我知道这个答案与您的要求略有不同,但它可能会有所帮助。您想从窗口标题栏修改内置菜单...但是如果您使用自定义 chrome 将菜单覆盖在您自己的菜单上(就像 mozilla firefox/MS Office 是如何做到的)?

为此,请从http://archive.msdn.microsoft.com/WPFShell 下载 WPF Shell 集成库并使用它。该库还包括一些其他很酷的功能,例如跳转列表。

有关此技术的更多文档位于 http://blogs.msdn.com/b/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx

【讨论】:

    【解决方案2】:

    您可以在 WPF 中创建自己的 ContextMenus

    <Grid>
        <Grid.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Dock" Command="{Binding ...}" />
            </ContextMenu>
        </Grid.ContextMenu>
    
    </Grid>
    

    请注意绑定,因为 WPF ContextMenus 与您的其他控件不属于同一可视树的一部分,因此绑定无法按预期工作。您可能需要一个与PlacementTarget 的相对源绑定来获取您的命令。

    【讨论】:

    • 嗨,瑞秋。谢谢你的建议。我已经知道该怎么做。问题是我需要在标题栏中执行此操作,这使它变得更加棘手。如果我按照您的建议进行操作,上下文菜单将在窗口内,但我不需要它。谢谢 =)。
    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多