QA@IT

C#でWPFでdatagridを利用してアプリを作成しています。わからないところがあるのでよろしくおねがいします。

6066 PV

C#でWin8で開発をしています。datagridのヘッダーの文字列を中央寄せにするにはXAMLを

<DataGrid.ColumnHeaderStyle>
    <Style TargetType="DataGridColumnHeader">
         <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
</DataGrid.ColumnHeaderStyle>

と書けばできたのですが、実際の数字を入れるCellを左寄せにしたいのですが、デフォルトの右寄せからうまくいきません。
教えてくださいお願いします。

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void DataGrid_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {

        }

        private void Window_Loaded_1(object sender, RoutedEventArgs e)
        {
            A.CanUserAddRows = false;
            A.Width = 400;
            A.ColumnWidth = 80;


            var data = new ObservableCollection<T>(
               Enumerable.Range(1, 1).Select(i => new T
               {
                   月 = "1",
                   目標 = "1000000",
                   実績 = "1000000",
                   差額 = "0",
                   差額累計 = "0"
               }));

            this.A.ItemsSource = data;


        }


    }

    public class T
    {

        public string 月 { get; set; }

        public string 目標 { get; set; }

        public string 実績 { get; set; }

        public string 差額 { get; set; }

        public string 差額累計 { get; set; }
    }
}

ちなみにDataGridに出力するプログラムはこのように書いています。

回答

それであれば、こうか、

<DataGrid x:Name="A" AutoGenerateColumns="True" >

  <DataGrid.ColumnHeaderStyle>
    <Style TargetType="DataGridColumnHeader">
      <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
  </DataGrid.ColumnHeaderStyle>

  <DataGrid.CellStyle>
    <Style TargetType="DataGridCell">
      <Style.Setters>
        <Setter Property="TextBlock.TextAlignment" Value="Center" />
      </Style.Setters>
    </Style>
  </DataGrid.CellStyle>

</DataGrid>

こうですね。

<DataGrid x:Name="A" AutoGenerateColumns="False" >

  <DataGrid.Columns>
    <DataGridTextColumn Header="月" Binding="{Binding 月}" Width="10"></DataGridTextColumn>
    <DataGridTextColumn Header="目標" Binding="{Binding 目標}" Width="100"></DataGridTextColumn>
    <DataGridTextColumn Header="実績" Binding="{Binding 実績}" Width="100"></DataGridTextColumn>
    <DataGridTextColumn Header="差額" Binding="{Binding 差額}" Width="50"></DataGridTextColumn>

    <DataGridTextColumn Header="差額累計" Binding="{Binding 差額累計}" Width="100">

      <DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}" >
          <Setter Property="TextAlignment" Value="Center" />
        </Style>
      </DataGridTextColumn.ElementStyle>

    </DataGridTextColumn>

  </DataGrid.Columns>


  <DataGrid.ColumnHeaderStyle>
    <Style TargetType="DataGridColumnHeader">
      <Setter Property="HorizontalContentAlignment" Value="Center"/>
    </Style>
  </DataGrid.ColumnHeaderStyle>

</DataGrid>
編集 履歴 (0)
  • ありがとうございます。できました。 -

以下みたいな感じでどうでしょうか?

<DataGrid.Columns>
  <DataGridTextColumn Header="Number" Binding="{Binding XPath=@Number}" Width="100">
    <DataGridTextColumn.ElementStyle>
      <Style TargetType="{x:Type TextBlock}" >
        <Setter Property="TextAlignment" Value="Center" />
      </Style>
    </DataGridTextColumn.ElementStyle>
  </DataGridTextColumn>
</DataGrid.Columns>

<DataGrid.ColumnHeaderStyle>
  <Style TargetType="DataGridColumnHeader">
    <Setter Property="HorizontalContentAlignment" Value="Center"/>
  </Style>
</DataGrid.ColumnHeaderStyle>
編集 履歴 (0)
  • ご回答ありがとうございます。やってみたのですが、DataGrid.Columsがアクセスできませんと表示されうまくいきません。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。