【问题标题】:Binding #items of a MenuItem to visibility in a CompositeCollection将 MenuItem 的 #items 绑定到 CompositeCollection 中的可见性
【发布时间】:2020-10-28 09:01:51
【问题描述】:

我有一个通过ObservableCollection 填充的MenuItem 加上一个静态MenuItem,我只想在集合为空时显示。

为此,我使用CompositeCollection,并尝试通过DataTrigger 触发MenuItem 的可见性,但无济于事。

无论我使用HasItems还是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>

【问题讨论】:

    标签: wpf xaml data-binding datatrigger


    【解决方案1】:

    绑定到源集合的Count 属性:

    <DataTrigger Binding="{Binding Count, 
        Source={x:Static win32:ClientProcessHandler.ClientProcessList}}" Value="0">
        <Setter Property="Visibility" Value="Collapsed" />
    </DataTrigger>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多