58

列データを WPF の中央に揃えるにはどうすればよいDataGridですか?

4

13 に答える 13

105

DataGridTextColumn を使用している場合は、次のコード スニペットを使用できます。

<Style TargetType="DataGridCell">
     <Style.Setters>
            <Setter Property="TextBlock.TextAlignment" Value="Center" />
     </Style.Setters>
</Style>
于 2010-04-28T12:39:44.277 に答える
50

詳細を知らずに言うのは難しいですDataGridTextColumnが、中心となるのは次のとおりです。

<wpf:DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True">
    <wpf:DataGridTextColumn.CellStyle>
        <Style>
            <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
        </Style>
    </wpf:DataGridTextColumn.CellStyle>
</wpf:DataGridTextColumn>
于 2009-04-06T09:45:48.473 に答える
22

私はhuttelihutのソリューションから始めました。残念ながら、それはまだ私にはうまくいきませんでした。私は彼の答えを微調整して、これを思いつきました(解決策は、テキストを右に揃えることです):

<Resources>
    <Style x:Key="RightAligned" TargetType="TextBlock">
        <Setter Property="HorizontalAlignment" Value="Right"/>
    </Style>
</Resources>

ご覧のとおり、スタイルを DataGridCell ではなく TextBlock に適用しました。

次に、 Cellスタイルではなく、Elementスタイルを設定する必要がありました。

ElementStyle="{StaticResource RightAligned}"
于 2013-05-09T10:17:09.587 に答える
15

ケント・ブーガートの場合は+1。私はこれを行うことになりました。これにより、コードが少しすっきりします (そして、複数の列で配置を使用できるようになります)。

<Resources>
      <Style x:Key="NameCellStyle" TargetType="DataGridCell">
                <Setter Property="HorizontalAlignment" Value="Center" />
      </Style>
</Resources>


<DataGrid.Columns>                           
   <DataGridTextColumn Header="Name" CellStyle="{StaticResource NameCellStyle}" Binding="{Binding Name}"/>                            
    // .. other columns        
</DataGrid.Columns>
于 2011-03-28T07:54:32.447 に答える
9

これは @MohammedAFadil の XAML の回答で、C# のコード ビハインドに変換されています。

var MyStyle = new Style(typeof(DataGridCell)) {
    Setters = {
        new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center)
    }
};

を適用するには、のプロパティをStyle設定します。CellStyleDataGrid

var MyGrid = new DataGrid() {
    CellStyle = MyStyle
};
于 2014-08-26T14:04:06.703 に答える
4

またはコードビハインドで:

grid.CellStyle = newCellStyle();

public static Style newCellStyle()
{
    //And here is the C# code to achieve the above
    System.Windows.Style style = new Style(typeof(DataGridCell));
    style.Setters.Add(new System.Windows.Setter
    {
        Property = Control.HorizontalAlignmentProperty,
        Value = HorizontalAlignment.Center
    });
    return style;
}
于 2012-08-23T12:31:04.730 に答える
3

セルがシフトされ、受け入れられた回答を使用してファンキーに見えるという問題が発生しました。遅いことはわかっていますが、私の調査結果が誰かの役に立てば幸いです。私が使う:

<DataGridTextColumn.ElementStyle>
     <Style>
          <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
     </Style>

CellStyle ではなく。

于 2013-07-03T15:12:38.507 に答える
1

わかりました、frameworkElement アプローチを使用しましたが、行を強調表示しようとすると奇妙な動作がありました。

このスレッドに WPF Datagrid 配置の別の例を掲載しました。

于 2009-08-24T19:50:54.573 に答える
1

私のお気に入りの解決策は次のとおりです。

<DataGridTextColumn Header="My Column" Binding="{Binding MyDBValue}" Width="100" >
<DataGridTextColumn.CellStyle>
        <Style>
                <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
        </Style>
</DataGridTextColumn.CellStyle>

于 2011-07-09T15:06:40.257 に答える
1

私にとって、これはうまく機能します

<DataGridTextColumn Width="1*" Binding="{Binding Balance, StringFormat=C} "Header="Balance">
  <DataGridTextColumn.CellStyle>
      <Style>
        <Setter Property="TextBlock.TextAlignment"  Value="Right"/>
      </Style>
   </DataGridTextColumn.CellStyle>
 </DataGridTextColumn>
于 2019-04-02T20:19:43.673 に答える
0

ブルーノの TextBlock.TextAlignment アプローチがとても気に入っています。これを水平方向の配置と組み合わせて使用​​すると、背景がグリッド セル全体に広がります。

例 (VB)

    Dim sty = New System.Windows.Style(GetType(DataGridCell))
    sty.Setters.Add(New Setter(HorizontalAlignmentProperty, HorizontalAlignment.Stretch))
    sty.Setters.Add(New Setter(TextBlock.TextAlignmentProperty, TextAlignment.Right))
    sty.Setters.Add(New Setter(BackgroundProperty, Brushes.LightGray))
于 2020-08-28T11:13:26.930 に答える