无法将 ListView.SelectedItems.Count 绑定到 Button.IsEnabled

Unable to Bind ListView.SelectedItems.Count to Button.IsEnabled

我有一个 Button,我想将其绑定到列表视图的 selectedItem 计数。我找不到我的错误在哪里。无论testListView.SelectedItems.Count.

如何,按钮状态始终启用

我需要某种转换器吗?如果 Count 为零,它应该隐式地将其转换为 false no ?

<ListView x:Name="testListView"  SelectionMode="Multiple" BorderThickness="1">            
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Name}"/>                       
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
</ListView>

<Button x:Name="Button" Content="TestButton" IsEnabled="False" IsEnabled="{Binding ElementName=testListView, Path=SelectedItems.Count}"/>

由于 SelectedItems 集合的 Count 属性 是 int 类型,而 IsEnabled 属性 需要 bool 输入,并且 C# 中不存在从 intbool 的隐式转换,您将需要转换器或数据触发器。

一个简单的 IValueConverter 应该可以解决问题,只需使用类似

的东西
return ((int)value) > 0;

作为Convert函数的内容!

通过样式使用 DataTrigger 进行更新;这样的事情应该有效:

<Button x:Name="Button" Content="TestButton">
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="IsEnabled" Value="true" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=testListView, Path=SelectedItems.Count}" Value="0">
                    <Setter Property="IsEnabled" Value="false" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>