Отформатировать заголовок столбца XAML DataGrid с помощью флажка - PullRequest
0 голосов
/ 10 июля 2020

Я использую MahApps Metro Style для форматирования WPF DataGrid.

<DataGrid x:Name="routes" ItemsSource="{Binding Routes}" AutoGenerateColumns="False" Style="{StaticResource AzureDataGrid}" CanUserAddRows="False" ColumnWidth="*" >
    <DataGrid.Columns>
          <DataGridCheckBoxColumn Binding="{Binding Active}" MaxWidth="80" ElementStyle="{DynamicResource MetroDataGridCheckBox}" EditingElementStyle="{DynamicResource MetroDataGridCheckBox}">
                <DataGridCheckBoxColumn.Header>
                     <CheckBox Name="chkSelectAllRoutes" Checked="chkSelectAllRoutes_Checked" Unchecked="chkSelectAllRoutes_Unchecked" IsChecked="True" ></CheckBox>
                 </DataGridCheckBoxColumn.Header>
           </DataGridCheckBoxColumn>

           <DataGridTemplateColumn MaxWidth="40">
                  <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                              <Button Click="btnSearchAtRoute_Click" Tag="{Binding Identifier}" >
                                        <iconPacks:Material Kind="MapMarkerPath" />
                              </Button>                                  
                        </DataTemplate>
                  </DataGridTemplateColumn.CellTemplate>
           </DataGridTemplateColumn>
                    
           <DataGridTextColumn Binding="{Binding Name}" IsReadOnly="True" Header="Name"/>
           <DataGridTextColumn Binding="{Binding Distance, StringFormat=N2}" IsReadOnly="True" Header="Distance in KM"/>
    </DataGrid.Columns>
</DataGrid>

Первый столбец содержит CheckBox на уровне заголовка и элемента. Результат показан на скриншоте ниже. Флажок заголовка выровнен по левому краю, а флажки элемента - по центру столбца.

введите описание изображения здесь

Как добиться, чтобы флажок заголовка выглядел как флажки элемента (выровнены по центру)?

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете использовать стиль заголовка столбца для центрирования флажка.

<DataGridCheckBoxColumn Binding="{Binding Active}" MaxWidth="80" ElementStyle="{DynamicResource MetroDataGridCheckBox}" EditingElementStyle="{DynamicResource MetroDataGridCheckBox}">

   <DataGridCheckBoxColumn.HeaderStyle>
      <Style TargetType="{x:Type DataGridColumnHeader}">
         <Setter Property="HorizontalContentAlignment" Value="Center"/>
      </Style>
   </DataGridCheckBoxColumn.HeaderStyle>

   <DataGridCheckBoxColumn.Header>
      <CheckBox Name="chkSelectAllRoutes" Checked="chkSelectAllRoutes_Checked" Unchecked="chkSelectAllRoutes_Unchecked" IsChecked="True" ></CheckBox>
   </DataGridCheckBoxColumn.Header>

</DataGridCheckBoxColumn>
...