Wpf 上下文菜单可见性的触发器?
我有一个列表框,开始时里面没有任何项目。当用户使用GUI从组合框中选择一个值并单击add按钮时,列表框将添加一个项。列表框还有一个上下文菜单集 当Listbox中没有项目时,如何使用XAML确保Listbox.contextmenu.Visibility属性设置为隐藏 更新 实际上,我最终使用了这个代码。请评论一下它是否合适Wpf 上下文菜单可见性的触发器?,wpf,xaml,triggers,contextmenu,Wpf,Xaml,Triggers,Contextmenu,我有一个列表框,开始时里面没有任何项目。当用户使用GUI从组合框中选择一个值并单击add按钮时,列表框将添加一个项。列表框还有一个上下文菜单集 当Listbox中没有项目时,如何使用XAML确保Listbox.contextmenu.Visibility属性设置为隐藏 更新 实际上,我最终使用了这个代码。请评论一下它是否合适 <Style TargetType="ListBox"> <Style.Resources> <Con
<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>
我不认为干扰ContextMenu的可见性是个好主意,如果列表为空,只需
null
清除整个菜单即可
e、 g
您也可以选择使用,如果没有项目,则无法打开ContextMenu,但这当然可能不适合您的场景。谢谢,最后我实际使用了它。为什么不取消它呢?在我看来,改变可视性就像是滥用财产。(此外,如果我的回答解决了您的问题或对您有足够的帮助,您可以通过左侧的复选框接受)
<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>