我有一些 ContextMenu 和一些 menuItems。
menuItems 之一是“添加项目...”。当用户选择这个项目时,他应该看到带有可用项目列表的子菜单;
这是我的上下文菜单的描述:
- Add Item
- Item 1
- Item 2
- Item 3
- Item 4
- Delete
- Copy
'Add Item' menuItem 的 ItemsSource 绑定(bind)到某个可观察的集合。集合中的每个模型都有“名称”和“IsEnabled”(我有将 bool 转换为可见性的转换器)。一切正常,除了“IsEnable”= false 的项目不可见,但我可以看到那里的空间。
例如:假设第 3 项具有 IsEnable = false:
Add Item
- Item 1
Item 2
Item 4
如果值为假,我的 bool2Vis 转换器会返回“已折叠”。
为什么我做错了?
这是上下文菜单代码:
<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>
最佳答案
我认为 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>
关于wpf - ContextMenu 项目可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394988/