Q037. DataGrid のセルデータの水平位置を中央に変えたいのですが・・・

A. 既知のバグかどうか知りませんが、スタイルで HorizontalAlignment を Center に設定したら、列幅を Star にした場合、列ヘッダとセルの位置がずれるという現象が発生しました。 (ちなみに発生した環境は XP/SP3 + VS2010 です)
仕方ないのでさらにぐぐったら、ヒットしたのがテンプレートを編集する方法です。でもセル内容の水平位置をもう少し簡単に設定する方法はないものですかねぇ?それとも私が知らないだけ(汗

xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"

<Style x:Key="CenterAlignedCellStyle" TargetType="{x:Type my:DataGridCell}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type my:DataGridCell}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


関連記事DataGridCell HorizontalContentAlignment is not working
関連記事WPF Toolkit DataGrid, Part III – Playing with Columns and Cells
関連記事ContentPresenter クラス


WPF FAQ の目次に戻る