1

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

起初我尝试过这样的事情,但显然这不是我想要的,因为这会将 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>

建议?

4

1 回答 1

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>
于 2013-08-16T14:53:04.317 回答