正在使用MVVM结构开发WPF应用程序。
我的窗口显示菜单和当前的ViewModel。在菜单的某个菜单项中,我想列出当前ViewModel中找到的一些命令。在菜单中列出的命令将根据ViewModel而改变。
我已经成功地实现了这个功能,但是样式混乱了——命令菜单项在另一个菜单框中或其他地方。我会附上一张截图。
我将ViewModel的ICommand对象(在这种情况下是RelayCommands)封装在CommandViewModel中,它们公开了我想要在菜单上显示的命令和显示字符串。这些CommandViewModel在一个列表中:CurrentWorkspace.AdditionalOptionsCommands
。
以下是菜单的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>
当前外观:
期望的外观: