我有一个Button,我想绑定到listview的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}"/>
答案 0 :(得分:1)
由于SelectedItems
集合Count
属性的类型为int
,而IsEnabled
属性需要bool
输入,并且没有隐含C#中存在int
到bool
的转换,您需要转换器或数据触发器。
一个简单的IValueConverter
应该可以解决问题,只需使用
return ((int)value) > 0;
作为Convert
函数的内容!
答案 1 :(得分:1)
通过Style使用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>