Wpf DataGridColumnHeader复选框已选中绑定不';行不通

Wpf DataGridColumnHeader复选框已选中绑定不';行不通,wpf,checkbox,binding,Wpf,Checkbox,Binding,它是UI的一部分,INotifyPropertyChanged实现了cource接口,所有的绑定都可以正常工作。但是由于某种原因,绑定不起作用。给你 IsChecked="{Binding ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > 这是我的XAML: <DataGridTemplateColumn Width="Auto"> <DataGridTem

它是UI的一部分,
INotifyPropertyChanged
实现了cource接口,所有的
绑定都可以正常工作。但是由于某种原因,
绑定
不起作用。给你

IsChecked="{Binding ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
这是我的XAML:

<DataGridTemplateColumn Width="Auto">
   <DataGridTemplateColumn.HeaderStyle>
      <Style TargetType="{x:Type DataGridColumnHeader}">
         <Setter Property="Template">
            <Setter.Value>
               <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                  <CheckBox Margin="0,2,3,0" Checked="ArchiveDocsLinkedMainCheckBoxChecked"  Unchecked="ArchiveDocsLinkedMainCheckBoxUnchecked" HorizontalAlignment="Center"  IsChecked="{Binding ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
                     <CheckBox.ToolTip>Выделить все/Снять выделение</CheckBox.ToolTip>
                  </CheckBox>
               </ControlTemplate>
            </Setter.Value>
         </Setter>
      </Style>
   </DataGridTemplateColumn.HeaderStyle>
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Center" Name="theCheckbox"/>
      </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>   
我想这是因为绑定在DataGridColumnHeader的模板中。对于绑定来说,这并不是一个非常标准的情况。如何正确指定
绑定
?谢谢

我解决了这个问题

绑定必须如下所示:

IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, 
                                                                Path=ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
显然,当您在
ControlTemplate
中时,您就在
ControlTemplate
DataContext
中。因此,您必须进入上层才能访问
窗口的
DataContext
:)


p、 为什么,当我复制和粘贴一些代码时,它似乎移到了右边?ctrl+K不能解决这个问题,我强制手动调整代码…

检查输出窗口是否有任何绑定错误。他们将指导您失败的原因。在输出窗口中,我看不到有关此
绑定的任何信息:(请删除您上次的问题更新并将其添加为答案,以便此问题可以有一个可接受的答案。
IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, 
                                                                Path=ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">