我试图通过创建一个WindowsFormsHost并添加一个菜单条作为它的孩子,在c#中使用WPF制作一个菜单栏。请注意,我使用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不能将指定的值分配给集合。以下类型是预期的:"String".
同样的错误出现在所有带有标签"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>
我认为,在你的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