菜单没有项目

时间:2016-08-31 09:39:23

标签: c# wpf

我创建了一个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标签来修复它。

2 个答案:

答案 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>