2014-02-07 3 views
1

Это все - часть пользовательского интерфейса, INotifyPropertyChanged Интерфейс cource реализован, все Bindings работают нормально. Но по какой-то причине один Binding не работает. Вот.DataGridColumnHeader CheckBox IsChecked Binding не работает

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> 

И это мой код-за полем + собственности:

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

Я предполагаю, что это из-за Binding находится Шаблон DataGridColumnHeader. И это не очень стандартная ситуация для привязок. Как я могу правильно указать Binding? спасибо!

+2

Проверьте окно вывода для любых ошибок привязки. Они расскажут вам, почему это было неудачно. –

+0

В окне вывода я ничего не вижу об этом 'Binding' :( – monstr

+0

Пожалуйста, удалите последнее обновление и добавьте его в качестве ответа, чтобы этот вопрос мог принять принятый ответ. – Sheridan

ответ

1

Я решаю проблему.

привязка должна выглядеть следующим образом:

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

Очевидно, что когда вы находитесь в ControlTemplate вы находитесь в DataContext из ControlTemplate. Так что вы должны идти вверх, чтобы получить доступ к Window'sDataContext :)

p.s. почему, когда я копирую &, вставьте какой-то код, который кажется сдвинутым вправо? ctrl + K не решает это, и я принудительно отрегулировал код вручную ...

Смежные вопросы