wpf - 将 MenuItem 的 #items 绑定到 CompositeCollection 中的可见性
问题描述
我有一个MenuItem
通过ObservableCollection
加一个静态填充的MenuItem
,我只想在集合为空时显示。
为此,我正在使用CompositeCollection
,并尝试触发MenuItem
通孔的可见性,DataTrigger
但无济于事。
无论我使用HasItems
or Items.Count
,绑定本身似乎都是问题:
<MenuItem x:Name="ClientsList" Header="Clients">
<MenuItem.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={x:Static win32:ClientProcessHandler.ClientProcessList}}" />
<MenuItem Header="No Client.." IsEnabled="False">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<!-- Here is the binding -->
<DataTrigger Binding="{Binding Items.Count, ElementName=ClientsList}" Value="2">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</CompositeCollection>
</MenuItem.ItemsSource>
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsChecked" Value="{Binding IsSelected, Mode=OneWay}" />
<Setter Property="Header" Value="{Binding Path}" />
<Setter Property="Command" Value="{Binding DataContext.SelectClient, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
<Setter Property="CommandParameter" Value="{Binding }" />
<Setter Property="StaysOpenOnClick" Value="True" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
解决方案
绑定到Count
源集合的属性:
<DataTrigger Binding="{Binding Count,
Source={x:Static win32:ClientProcessHandler.ClientProcessList}}" Value="0">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
推荐阅读
- python - 无法在 Python 中抑制 DeprecationWarning
- go - go编译器如何优化字符串常量的存储?
- github - 禁用从注释文件运行的 Github 操作检查
- excel - 根据标题返回数组
- angular - 单击按钮时隐藏弹出窗口
- java - 从 app.properties 访问值并使用 @Value Springboot 存储在变量中
- spring-data-jpa - JPA - 为什么派生查询返回可选对象?
- api - Wikipedia API - 返回某些页面而不是其他页面的坐标?
- reactjs - 在 React Native useState 中初始化数组
- sql - ORA-03113 - 通信通道结束