我想在 xaml 中实现一个全选复选框。
我在列表视图中有几个(模板化)复选框。然后我在列表视图之外有一个复选框,我想要一个“全选”行为。我可以在我的 ViewModel 中轻松解决问题,但是,我认为在 xaml 中执行此操作会更优雅,因为全选复选框(直接)与我的 ViewModel 没有任何关系。代码看起来像这样:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox Content="Globale Eingabe"
Name="SelectSingle"
IsChecked="{Binding IsChecked}">
</CheckBox>
</DataTemplate>
<ListView.ItemTemplate>
</ListView>
<CheckBox Name="SelectAll" />
如您所见,SelectSingle 的 IsChecked 属性已绑定到我的 ViewModel。所以我认为我需要一个触发器来操纵复选框的状态。
现在我已经尝试过这样的事情:
<CheckBox Content="Globale Eingabe"
Name="SelectSingle"
IsChecked="{Binding IsChecked}">
<CheckBox.Triggers>
<Trigger SourceName="SelectAll" Property="IsChecked" Value="True">
<Setter TargetName="SelectSingle" Property="IsChecked" Value="True"/>
</Trigger>
</CheckBox.Triggers>
</CheckBox>
或者这样的:
<CheckBox Content="Globale Eingabe"
Name="SelectSingle"
IsChecked="{Binding IsChecked}">
<CheckBox.Triggers>
<DataTrigger Binding="{Binding ElementName=SelectAll, Path=IsChecked}"
Value="True">
<Setter TargetName="Check"
Property="IsChecked"
Value="True"/>
</DataTrigger>
</CheckBox.Triggers>
</CheckBox>
我也在一种风格中尝试过同样的事情,但无济于事。我总是收到一个错误,类似于“在类型“ContentPresenter”中找不到静态成员“IsCheckedProperty””。
现在听起来好像 Target/SourceName 绑定不起作用,但为什么呢?有什么我想念的吗?