我正在尝试创建一个带有复选框列的数据网格,该列具有一个带有复选框的标题,该复选框选择并取消选中行的复选框。我也试图在没有代码的情况下做到这一点。 到目前为止,我已经获得了部分成功,因为我在绑定中使用了datagrid的标签作为中间人,并且可以使用数据触发器从标题复选框中选择行的复选框,但是一旦我检查了行中的绑定'死',它不再受标题的影响。此外,我已经尝试使用单向绑定而不是数据触发器并获得相同的结果... 有没有人知道一种方法来保持绑定活着或pheraps另一种方式来实现我正在寻找inxaml的效果。
头:
<CheckBox IsChecked="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}"/>
列模板:
<CheckBox>
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Style.Triggers>
<DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="True">
<Setter Property="IsChecked" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="False">
<Setter Property="IsChecked" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
答案 0 :(得分:0)
解决这个问题实际上是个好主意。我不明白为什么那不起作用。
那就是说,有几件事要尝试:
将标题复选框和行复选框放在窗口上(通常不在DataGrid中)以查看其效果。
另一个选项是尝试命名Header复选框(例如<CheckBox Name="cbxHeader"
),然后使用{Binding ElementName=cbxHeader Path=Tag}
绑定它。
此外,在测试时(在运行时,调试&gt; Windows&gt;输出;它可能显示为空但只是向上滚动)检查Visual Studio中的“输出”窗口,查看有关绑定失败原因的任何消息
您还可以使用虚假ValueConverter
来尝试查看绑定是否仍在触发。