How to center WPF CheckBox inside a GridViewColumn?

How to center WPF CheckBox inside a GridViewColumn?

<GridViewColumn Width="60" Header="Success"> <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding Path=IsSuccess}"> </CheckBox> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> 

UPDATE:

This solution works fine, but it destroys the Expression tone theme for the cells ... (I don’t know, I know how to fix it ...)

 <ListView Name="HistoryTable" Width="783" VerticalAlignment="Stretch" VerticalContentAlignment="Top" Height="195"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> </ListView.ItemContainerStyle> <ListView.Resources> <Style TargetType="{x:Type CheckBox}" x:Key="DataGridCheckBox"> <Setter Property="HorizontalAlignment" Value="Center" /> <Setter Property="HorizontalContentAlignment" Value="Center" /> <Setter Property="IsEnabled" Value="False" /> <Setter Property="Margin" Value="4" /> <Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type GridViewColumn}},Path=ActualWidth}" /> </Style> </ListView.Resources> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding Filename}" Width="140" Header="{lex:LocTextExtension Key=Name, Dict=Resources, Assembly=PreShow.Player}" /> <GridViewColumn Width="60" Header="{lex:LocTextExtension Key=Success, Dict=Resources, Assembly=PreShow.Player}"> <GridViewColumn.CellTemplate> <DataTemplate> <DockPanel HorizontalAlignment="Center"> <CheckBox IsChecked="{Binding Path=IsSuccess}" Style="{StaticResource DataGridCheckBox}"> </CheckBox> </DockPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> 

enter image description here

+4
source share
2 answers

This should be a boneless configuration:

 <ListView.Resources> <!-- Alternatively use the ItemContainerStyle of course --> <Style TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> <!-- Use BasedOn to preserve existing style --> <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}"> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/> </Style> </ListView.Resources> 
+4
source

Bind the new width of the Grid column (in the DataTemplate) to the width of the GridView column.

 <GridViewColumn Header="Header="{StaticResource CheckBoxHeaderText}" x:Name="CheckBoxColumn" Width="125"> <GridViewColumn.CellTemplate> <DataTemplate> <Grid Width="{Binding ElementName=CheckBoxColumn, Path=Width}"> <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsCheckBoxChecked, Mode=OneWay}" /> </Grid> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> 
+6
source

Source: https://habr.com/ru/post/1393355/


All Articles