【问题标题】:C# WPF MenuStrip ControllerC# WPF 菜单条控制器
【发布时间】:2016-11-16 16:32:43
【问题描述】:

我正在尝试通过创建 WindowsFormsHost 并添加 MenuStrip 作为其子项,在 C# 中使用 WPF 制作 MenuBar。请注意,我使用 WindowsFormsHost 控制器的属性页添加菜单和菜单项。

当我完成后,项目构建并成功运行,但在生成的“xaml”文件中显示一些错误,并且设计器没有加载设计。

这是生成的 XAML 代码

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" x:Class="FrontEnd.AppMainWindow"
    Title="AppMainWindow" Height="351" Width="826">
<Grid>
    <WindowsFormsHost x:Name="menuStripHost" HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="818">
        <Forms:MenuStrip Visible="True" Name="appMainMenu">
            <Forms:MenuStrip.Items>
                <Forms:ToolStripMenuItem Text="File">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem ShortcutKeys="Ctrl+N" Text="New Project"/>
                        <Forms:ToolStripMenuItem ShortcutKeys="Ctrl+O" Text="Open Project"/>
                        <Forms:ToolStripMenuItem Text="Exit"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
                <Forms:ToolStripMenuItem Text="View">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem Text="Configuration Window"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
                <Forms:ToolStripMenuItem Text="Help">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem Text="User Manual"/>
                        <Forms:ToolStripMenuItem Text="Help"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
            </Forms:MenuStrip.Items>
        </Forms:MenuStrip>
    </WindowsFormsHost>

</Grid></Window>

这是错误

错误 2 无法将指定的值分配给集合。应为以下类型:“字符串”。

标签为“Forms:ToolStripMenuItem”的所有行都会出现相同的错误

更新: 尝试删除 ShortcutKeys 属性,问题依然存在(与上述相同的错误)。 这是修改后的代码...

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" x:Class="FrontEnd.AppMainWindow"
    Title="AppMainWindow" Height="351" Width="826">
<Grid>
    <WindowsFormsHost x:Name="menuStripHost" HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="818">
        <Forms:MenuStrip Visible="True" Name="appMainMenu">
            <Forms:MenuStrip.Items>
                <Forms:ToolStripMenuItem Text="File">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem Text="New Project"/>
                        <Forms:ToolStripMenuItem Text="Open Project"/>
                        <Forms:ToolStripMenuItem Text="Exit"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
                <Forms:ToolStripMenuItem Text="View">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem Text="Configuration Window"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
                <Forms:ToolStripMenuItem Text="Help">
                    <Forms:ToolStripMenuItem.DropDownItems>
                        <Forms:ToolStripMenuItem Text="User Manual"/>
                        <Forms:ToolStripMenuItem Text="Help"/>
                    </Forms:ToolStripMenuItem.DropDownItems>
                </Forms:ToolStripMenuItem>
            </Forms:MenuStrip.Items>
        </Forms:MenuStrip>
    </WindowsFormsHost>

</Grid></Window>

【问题讨论】:

  • 找到了一个很好的替代方法来创建 WindowsFormsHost 并在其中创建 MenuStrip,我使用 WPF Menu 和 MenuItem 控制器来实现菜单。这是link 用一个例子来介绍他们

标签: c# wpf


【解决方案1】:

我认为在您的 ToolStripMenuItems 中,您正在为 ShortcutKeys 属性分配一个字符串: ShortcutKeys="Ctrl+N"... 根据文档,这应该是“键”类型; https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem.shortcutkeys%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

【讨论】:

  • 尝试删除 ShortcutKeys 属性,问题依旧存在...
  • 你确定吗?您可以将您现在拥有的内容添加到问题的底部吗?
  • 请再看一下这个问题,因为我按照您的要求进行了更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2014-06-04
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多