将 MenuItem 添加到已经存在的 WPF 标题菜单

Posted

技术标签:

【中文标题】将 MenuItem 添加到已经存在的 WPF 标题菜单【英文标题】:Adding MenuItem to the allready existing WPF header Menu 【发布时间】:2019-02-21 04:50:02 【问题描述】:

What at the moment is, What i want

我想在单击应用程序图标时打开的现有菜单中添加一个 MenuItem。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

可以使用互操作来进行 Win32 调用...首先覆盖 Window 的 SourceInitialized 方法并添加以下内容:

public const uint MyMenuItemID = 0x0555;

private const uint MF_BYCOMMAND = 0x00000000;
private const uint MF_BYPOSITION = 0x00000400;

[DllImport ("user32.dll")]
private static extern IntPtr GetSystemMenu (IntPtr hWnd, bool bRevert);

[DllImport ("user32.dll")]
private static extern bool InsertMenu (IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem);

private void Window_SourceInitialized (object sender, EventArgs e)

    HwndSource source = PresentationSource.FromVisual (this) as HwndSource;
    if (source != null) 
        IntPtr hMenu = GetSystemMenu (source.Handle, false);
        InsertMenu (hMenu, 5, MF_BYPOSITION, MyMenuItemID, "my own MenuItem");
    

【讨论】:

以上是关于将 MenuItem 添加到已经存在的 WPF 标题菜单的主要内容,如果未能解决你的问题,请参考以下文章

WPF:从 DataGrid 复制

WPF ContextMenu DataTemplate MenuItem Visibility 问题

WPF:设置MenuItem多种不同状态图标

wpf MenuItem下拉背景颜色

wpf MenuItem动态加载数据

WPF-MenuItem只显示最后一个Icon