我有一些ContextMenu和一些menuItems。 其中一个menuItem是“Add Item ...”。当用户选择此项时,他应该看到包含可用项列表的子菜单;
这里是我的contextMenu:
的描述
- 添加项目
- 第1项
- 第2项
- 第3项
- 第4项
- 删除
- 复制
'Add Item'的ItemsSource menuItem被绑定到一些可观察的集合。集合中的每个模型都有'Name'和'IsEnabled'(我有转换器将bool转换为可见性)。一切正常,除了“IsEnable”= false的项目不可见,但我可以看到空间。 例如:假设Item 3有IsEnable = false:
添加项目
- 第1项
第2项
第4项
我的bool2Vis转换器在假值的情况下返回'Collapsed'。
是的,我做错了?这是ContextMenu代码:
<ContextMenu x:Key="mainContextMenu" DataContext="{Binding Source={x:Static fw:UIMainManager.Instance},Path=layoutManager}">
<MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}" >
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding ControlName}" Visibility="{Binding IsEnabled,Converter={StaticResource boolToVisibilityConverter}}"
Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}" CommandParameter="{Binding}"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Source={x:Static fw:ApplicationCommands.Copy}}" />
<MenuItem Header="Paste" Command="{Binding Source={x:Static fw:ApplicationCommands.Paste}}" />
<MenuItem Header="Cut" Command="{Binding Source={x:Static fw:ApplicationCommands.Cut}}" />
<MenuItem Header="Duplicated" Command="{Binding Source={x:Static fw:ApplicationCommands.DuplicateControl}}" />
<MenuItem Header="Delete" Command="{Binding Source={x:Static fw:ApplicationCommands.DeleteControl}}" />
</ContextMenu>
答案 0 :(得分:1)
我认为MenuItem
已折叠,但不是MenuItem
的ItemContainer。试试这个:
<MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="Visibility" Value="{Binding IsEnabled, Converter={StaticResource boolToVisibilityConverter}}" />
</Style>
</MenuItem.ItemContainerStyle>
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding ControlName}"
Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}"
CommandParameter="{Binding}" />
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>