DataGridCloumnHeaderCheckbox style - PullRequest
0 голосов
/ 11 марта 2012

Я использую сетку данных WPF.Используя следующий стиль, я применяю флажок к одному из столбцов заголовка.

<Style x:Key="TestDataColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                            <CheckBox x:Name="chkbxCheckAll" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=CheckAll, Mode=TwoWay, ElementName=TestDataScreen}" Click="chkbxCheckAll_Click">

                            </CheckBox>
        </ControlTemplate>
    </Setter.Value>
</Setter>
<Setter Property="Control.Background">
    <Setter.Value>
        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
            <GradientStop Offset="1" Color="#FFC2E3F6" />
            <GradientStop Offset="0.53" Color="#FFF1FBFD" />
            <GradientStop Color="#FFF2FAFD" />
        </LinearGradientBrush>
    </Setter.Value>
</Setter>
<Setter Property="Control.BorderBrush" Value="#FFDADADA" />
<Setter Property="Control.BorderThickness" Value="1,0,1,1" />
<Setter Property="Control.Height" Value="26" />
<Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
</Style>

Проблема, с которой я сталкиваюсь, заключается в том, что я вижу флажок в столбце заголовка, но цвет фона заголовка столбца не изменяется.

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Попробуйте добавить рамку вокруг флажка следующим образом:

<Border Background="{TemplateBinding Background}">
  <CheckBox x:Name="chkbxCheckAll" VerticalAlignment="Center"
          HorizontalAlignment="Center" 
          IsChecked="{Binding Path=CheckAll, Mode=TwoWay, ElementName=TestDataScreen}" 
          Click="chkbxCheckAll_Click">
  </CheckBox>
</Border>

Изменить:

Если вы сделаете фон черный и установите фон CheckBox на TemplateBindingФон вы заметите, что немного бит флажка становится черным.Это связано со стилем встроенного CheckBox.

0 голосов
/ 11 марта 2012

Просто предположение, может быть, Background изначально был привязан к чему-то в шаблоне по умолчанию, который вы переопределяете.Может быть, вы можете попробовать исправить это, добавив TemplateBinding для фона в CheckBox:

<CheckBox x:Name="chkbxCheckAll" ... Background="{TemplateBinding Background}">

Кстати, это не проверено.

...