我希望避免在XAML或代码中手动构建菜单,而是通过绑定到一个
ICommand
派生对象列表来实现。但是,我遇到了一个问题,即生成的菜单有两个级别的菜单项(即每个MenuItem
包含在一个MenuItem
中):
我的猜测是这种情况发生的原因是WPF自动为我的绑定生成了一个MenuItem
,但我正在使用的“viewer”实际上已经是一个MenuItem
(它派生自MenuItem
)。<ContextMenu
x:Name="selectionContextMenu"
ItemsSource="{Binding Source={x:Static OrangeNote:Note.MultiCommands}}"
ItemContainerStyleSelector="{StaticResource separatorStyleSelector}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<Viewers:NoteCommandMenuItemViewer
CommandParameter="{Binding Source={x:Static OrangeNote:App.Screen}, Path=SelectedNotes}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
来自http://bea.stollnitz.com/blog/?p=23,它允许我在绑定源中使用元素。
因此,菜单绑定到一组,每个项的CommandParameter
设置为相同的全局目标(这恰好是一个集合,但这并不重要)。
我的问题是,有没有办法使WPF不自动将每个项包装在