wpf datagrid复选框列标题取消/选择全部

wpf datagrid复选框列标题取消/选择全部,wpf,xaml,binding,wpfdatagrid,Wpf,Xaml,Binding,Wpfdatagrid,我正在尝试创建一个带有复选框列的datagrid,该列的标题带有一个复选框,用于选择和取消选择行的复选框。同时,我也试图做到这一点,没有背后的代码。 到目前为止,我已经取得了部分成功,因为我在绑定中使用了datagrid的标记作为中间人,并且可以使用数据触发器从标题复选框中取消/选择行的复选框,但是一旦我选中一行,该行中的绑定将“终止”,并且不再受标题的影响。另外,我已经用单向绑定代替数据触发器进行了尝试,并得到了相同的结果。。。 是否有人知道一种方法可以保持绑定的活性,或者使用另一种方法来实现

我正在尝试创建一个带有复选框列的datagrid,该列的标题带有一个复选框,用于选择和取消选择行的复选框。同时,我也试图做到这一点,没有背后的代码。 到目前为止,我已经取得了部分成功,因为我在绑定中使用了datagrid的标记作为中间人,并且可以使用数据触发器从标题复选框中取消/选择行的复选框,但是一旦我选中一行,该行中的绑定将“终止”,并且不再受标题的影响。另外,我已经用单向绑定代替数据触发器进行了尝试,并得到了相同的结果。。。 是否有人知道一种方法可以保持绑定的活性,或者使用另一种方法来实现我仅在XAML中寻找的效果

标题:

<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>

这实际上是解决这个问题的好主意。我不明白为什么那不管用

也就是说,有几件事可以尝试:

通常将标题复选框和行复选框放置在窗口上(不在数据网格内),以查看其效果

另一个选项是尝试命名有关绑定失败原因的任何消息的标题复选框(例如
Windows>Output;它可能显示为空,但只是向上滚动)


您还可以使用假的
ValueConverter
尝试查看绑定是否仍在启动。

谢谢您的评论!由于各种问题,我目前无法检查您的建议,但我想推测一下。我已经尝试检查了输出,但没有发现绑定错误,我认为在列中使用元素名存在问题,不属于可视树的一部分,或者其他什么。。。不管怎样,我还是要试一试。我认为当我检查一个单独的行时,我与数据触发器相矛盾,因此从那时起它被忽略。我是WPF的新手,所以。。。这合乎逻辑/可能吗?