触发ContextMenu可见性?

caa*_*caa 2 wpf xaml triggers contextmenu

我有一个Listbox,开始时没有任何项目.当用户使用GUI从组合框中选择值并单击添加按钮时,列表框将添加一个项目.列表框还有一个上下文菜单集.

如何在列表框中没有项目的情况下使用XAML确保将Listbox.contextmenu.Visibility属性设置为隐藏?

UPDATE

我实际上最终使用了这段代码.请评论其适当性

<Style TargetType="ListBox">
        <Style.Resources>
            <ContextMenu x:Key="cm">
                <MenuItem Header="Buy"/>
                <MenuItem Header="Sell"/>
            </ContextMenu>
        </Style.Resources>
        <Setter Property="ContextMenu" Value="{StaticResource cm}"/>
        <Style.Triggers>
            <Trigger  Property="ListBox.HasItems" Value="False">
                <Setter Property="ContextMenu.Visibility" Value="Hidden"/>
            </Trigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

H.B*_*.B. 6

我不认为弄乱ContextMenu的可见性是一个好主意,null如果列表为空,只需输出整个菜单.

例如

<Style TargetType="{x:Type ListBox}">
    <Style.Resources>
        <ContextMenu x:Key="cm">
            <!-- Menu here -->
        </ContextMenu>
    </Style.Resources>
    <Setter Property="ContextMenu" Value="{StaticResource cm}" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0">
            <Setter Property="ContextMenu" Value="{x:Null}" />
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

您也可以选择仅使用项目本身定义ContextMenus ItemContainerStyle,然后在没有项目的情况下不能打开ContextMenu,但这当然不适合您的场景.