使用DataTemplates绑定动态ContextMenu项

时间:2014-10-06 17:07:39

标签: c# wpf data-binding contextmenu

我有一个需要动态上下文菜单的应用,可以更改每个项目。我实现这个的方法是创建一个具有Name和Command属性的可绑定对象(我不想在我的viewmodel中创建UI MenuItem对象)。我将ContextMenu.ItemsSource绑定到此集合并设置项目模板,它工作得很好,除了我没有得到分隔符。我略微改变了我的方法,所以我为两个模型对象中的一个定义了两个DataTemplates,并且不再设置项模板(因为它现在必须在菜单项和分隔符模板之间切换)。问题是它现在根本不使用这些模板。我只是在类项上获得标准的ToString。我的模板在这里定义在同一个文件中:

<DataTemplate DataType="{x:Type contracts:BindableMenuItem }">
    <MenuItem DataContext="{Binding}" Header="{Binding MenuItemHeader}" Command="{Binding MenuCommand}" />
</DataTemplate>

<DataTemplate DataType="{x:Type contracts:BindableMenuSeparator }">
    <Separator />
</DataTemplate>

这些永远不会被使用。我错过了什么?

0 个答案:

没有答案