首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridColumnHeader CheckBox IsChecked绑定无效

DataGridColumnHeader CheckBox IsChecked绑定无效
EN

Stack Overflow用户
提问于 2014-02-07 10:24:07
回答 1查看 916关注 0票数 1

它全部是UI的一部分,当然实现了INotifyPropertyChanged接口,所有的Bindings都能很好的工作.但由于某种原因,一个Binding无法工作。这就是了。

代码语言:javascript
复制
IsChecked="{Binding ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >

这是我的XAML:

代码语言:javascript
复制
<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>   

这是我的代码隐藏字段+属性:

代码语言:javascript
复制
private Boolean _archiveDocsLinkedChecked
public Boolean ArchiveDocsLinkedChecked
{
    get
    {
        return _archiveDocsLinkedChecked;
    }
    set
    {
        _archiveDocsLinkedChecked = value;
        RaisePropertyChanged("ArchiveDocsLinkedChecked");
    }
}        

我想是因为Binding是DataGridColumnHeader的模板。对于绑定来说,这也不是很好的标准情况。如何正确地指定该Binding?太棒了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 05:33:00

我解决了问题。

绑定必须如下所示:

代码语言:javascript
复制
IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, 
                                                                Path=ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

显然,当您在ControlTemplate时,您在DataContext of ControlTemplate中。因此,您必须到上层才能访问Window's DataContext :)

附注:为什么,当我复制和粘贴一些代码时,它似乎移到了右侧?ctrl+K解决不了这个问题,我强迫手动调整代码.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21625144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档