动态绑定到Window的MenuItem上的ViewModel命令
||
使用MVVM结构在WPF应用程序上工作。
我的窗口显示一个菜单和当前的ViewModel。在Menu的MenuItem之一上,我想列出一些在当前ViewModel中找到的命令。菜单中列出的命令将根据ViewModel进行更改。
我使它工作正常,但是样式搞砸了-Command MenuItems在另一个菜单框之内。我将附上屏幕截图。
我将ViewModel的ICommand对象(在此示例中为RelayCommands)包装在CommandViewModel中,该对象在菜单上公开了我想要的Command和Display字符串。这些CommandViewModels在列表中:“ 0”。
这是菜单的XAML。就像我说的那样,它有效,它显示正确的项目并执行了命令。显示内容不正确-有人可以告诉我原因以及如何解决吗?查看屏幕截图。
<Menu>
<MenuItem Header=\"_Additional Options...\" ItemsSource=\"{Binding Path=CurrentWorkspace.AdditionalOptionsCommands}\">
<MenuItem.ItemTemplate>
<DataTemplate DataType=\"{x:Type vm:CommandViewModel}\">
<MenuItem Header=\"{Binding Path=DisplayText}\" Command=\"{Binding Path=Command}\"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header=\"_Testing\">
<MenuItem Header=\"This looks right\" />
<MenuItem Header=\"This looks right\" />
</MenuItem>
</Menu>
当前外观:
所需外观:
没有找到相关结果
已邀请:
1 个回复
慰泥悍瓶
指定菜单项时,每个项目都会自动包装到
对象中。这样,在
(
元素)中定义的内容将被包装为另一个
。 您需要为
定义一种样式,而不是定义
,您可以在其中设置与视图模型属性的绑定,并将此样式用作父
上的
:
请参阅http://drwpf.com/blog/2008/03/25/itemscontrol-i-is-for-item-container/了解有关项目容器如何与
控件一起使用的深入说明。