如何为Silverlight 3数据网格中心对齐标题模板的内容?

时间:2010-01-22 11:28:19

标签: silverlight silverlight-3.0 datagrid

我想在数据网格的标题中设置一个复选框,但是,我似乎无法将复选框居中对齐。

这是我的xaml:

<data:DataGrid 
x:Name="myDataGrid"
VerticalAlignment="Top" 
Width="300" 
Grid.Column="0" 
AutoGenerateColumns="False">
<data:DataGrid.Columns>                    
    <data:DataGridCheckBoxColumn Binding="{Binding IsNew}" Width="80">
        <data:DataGridCheckBoxColumn.HeaderStyle>
            <Style TargetType="dataprimitives:DataGridColumnHeader">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Border Background="Red" Width="80" HorizontalAlignment="Center">
                                <CheckBox
                                    x:Name="chkAll" 
                                    HorizontalAlignment="Center" 
                                    HorizontalContentAlignment="Center"
                                    Click="chk_Click">
                                </CheckBox>
                            </Border>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </data:DataGridCheckBoxColumn.HeaderStyle>
    </data:DataGridCheckBoxColumn>
    <data:DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" Width="50" />
    <data:DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" Width="100" />
</data:DataGrid.Columns>

我的数据网格的屏幕截图可以在http://img686.imageshack.us/img686/5109/datagrid.png

看到

我只使用边框来说明问题,但我也尝试过Grid和Stackpanel以及将复选框直接放在DataTemplate标签下,但都无济于事。如何让复选框居中?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

问题是DataGridColumnHeader的默认控件模板在右侧有一个12像素的配置,用于出现SortIcon。移除Border并将Margin="12,0,0,0"添加到CheckBox,它应该排成一行。