2014-02-07 2 views
1

UI의 모든 부분입니다. INotifyPropertyChanged 인터페이스가 구현되었으며, 모두 Bindings이 정상적으로 작동합니다. 그러나 어떤 이유로 든 하나는 Binding 작동하지 않습니다. 여기있어.DataGridColumnHeader CheckBox IsChecked 바인딩이 작동하지 않습니다.

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> 

그리고 이것은 내 코드 숨김 필드 + 속성입니다 : 나는 Binding이 DataGridColumnHeader의 템플릿 내에 있기 때문이다 가정

private Boolean _archiveDocsLinkedChecked 
public Boolean ArchiveDocsLinkedChecked 
{ 
    get 
    { 
     return _archiveDocsLinkedChecked; 
    } 
    set 
    { 
     _archiveDocsLinkedChecked = value; 
     RaisePropertyChanged("ArchiveDocsLinkedChecked"); 
    } 
}   

. 그리고 그것은 바인딩에 대한 꽤 뚜렷한 상황이 아닙니다. Binding을 올바르게 지정하려면 어떻게해야합니까? 고마워!

+2

모든 바인딩 오류를 출력 창에서 확인하십시오. 그들은 왜 그것이 실패하고 있는지 당신을 안내 할 것입니다. –

+0

출력 창에서 나는이 'Binding'에 대해 아무것도 알지 못합니다. ( – monstr

+0

마지막 질문 업데이트를 제거하고 답변으로 추가하십시오.이 질문에 대답이있을 수 있습니다. – Sheridan

답변

1

나는이 문제를 해결한다.

바인딩해야는 다음과 같습니다

IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, 
                   Path=ArchiveDocsLinkedChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 

를 분명히, 당신은 ControlTemplate에있을 때 당신이 ControlTemplateDataContext에 있습니다. 따라서 Window'sDataContext :

p.s.에 액세스하려면 상단으로 이동해야합니다. 왜, 내가 복사 & 붙여 넣기하면 일부 코드가 오른쪽으로 이동 나타납니다? Ctrl + K로 해결할 수 없으며 코드를 수동으로 조정해야합니다 ...

관련 문제