我创建了一个ContextMenu,里面有一个Menu。菜单并不总是有项目。当没有项目时我想隐藏ContextMenu。
我风格的相关代码(generic.xaml)
<Grid.ContextMenu>
<ContextMenu Margin="10,10,0,13" Name="ContextMenu" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False">
<Menu>
<Menu.ItemsSource>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ChildCommands"/>
</Menu.ItemsSource>
<Menu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="MenuItem.Header" Value="{Binding Command.Text}"/>
<Setter Property="MenuItem.IsEnabled" Value="False"/>
</Style>
</Menu.ItemContainerStyle>
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
</Menu>
</ContextMenu>
</Grid.ContextMenu>
如果里面没有菜单项,我怎么能隐藏ContextMenu?
编辑:我通过将菜单标签更改为ContextMenu标签来修复它。
答案 0 :(得分:0)
通过上下文菜单使用visibility属性。隐藏上下文菜单绑定menuitemscount并使用转换器将Count转换为可见性枚举。
答案 1 :(得分:0)
我将Menu标签更改为ContextMenu标签,现在可以使用了。 ContextMenu仅在其中有项目时才可见。
代码:
<Grid.ContextMenu>
<ContextMenu Margin="10,10,0,13" Name="ContextMenu" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False">
<ContextMenu.ItemsSource>
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ChildCommands"/>
</ContextMenu.ItemsSource>
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="MenuItem.Header" Value="{Binding Command.Text}"/>
<Setter Property="MenuItem.IsEnabled" Value="False"/>
</Style>
</ContextMenu.ItemContainerStyle>
<ContextMenu.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ContextMenu.ItemsPanel>
</ContextMenu>
</Grid.ContextMenu>