在MenuItem ItemTemplate中定义另一级菜单项

时间:2013-08-16 14:49:19

标签: wpf wpf-controls

我的WPF窗口中有一个对象列表,它们都有一个上下文菜单,允许用户将项目复制或移动到不同的面板中(因此Context菜单的ItemsSource是这个面板列表,并且“复制”和“移动”是子菜单项。但是,我在对象中定义了一个“CanCopy”属性,用于确定是否可以实际复制该对象。如何根据此属性的值显示/隐藏此MenuItem?我的问题似乎是在定义这个变量的附加级别的MenuItems。

起初我尝试过类似的东西,但显然它并不是我想要的,因为这会将PanelName MenuItem加倍到两个MenuItem容器中:

<MenuItem Header="Panels..." ItemsSource="{Binding PanelsList}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding PanelName}">
                <MenuItem Header="Copy" Visibility="{Binding CanCopy,Converter={StaticResource BoolToHiddenConverter}}"/>
                <MenuItem Header="Move"/>
            </MenuItem>
        </DataTemplate>
    </MenuItem.ItemTemplate>
</MenuItem>

建议?

1 个答案:

答案 0 :(得分:0)

添加内容而不是ItemTemplate

<MenuItem Header="Panels..." ItemsSource="{Binding PanelsList}">
     <MenuItem Header="{Binding PanelName}">
         <MenuItem Header="Copy" Visibility="{Binding CanCopy,Converter={StaticResource BoolToHiddenConverter}}"/>
         <MenuItem Header="Move"/>
     </MenuItem>
</MenuItem>