DataGridのセルにStringFormatを適用する・右寄せをする
BindingにStringFormatを組み合わせることで、元データでデータを編集することなく、
桁区切りや日付のフォーマットなどを調整することができる。
また、ElementStyleにてTextAlignmentを設定することで、右寄せ・中央寄せができる。
CSファイル
public MainWindow()
{
InitializeComponent();
DataTable dtData = new DataTable();
dtData.Columns.Add("date", typeof(DateTime));
dtData.Columns.Add("name",typeof(string));
dtData.Columns.Add("price",typeof(int));
dtData.Columns.Add("num", typeof(int));
dtData.Columns.Add("total", typeof(int));
dtData.Rows.Clear();
AddItem(ref dtData, DateTime.Now, "冷蔵庫", 33110, 1200);
AddItem(ref dtData, DateTime.Now, "洗濯機", 28910, 900);
AddItem(ref dtData, DateTime.Now, "掃除機", 67500, 1180);
AddItem(ref dtData, DateTime.Now, "電子レンジ", 6450, 800);
AddItem(ref dtData, DateTime.Now, "エアコン", 48340, 620);
this.DataContext = dtData;
}
private void AddItem(ref DataTable dtData, DateTime datetime, string name, int price, int num)
{
DataRow drRow = dtData.NewRow();
drRow["date"] = datetime;
drRow["name"] = name;
drRow["price"] = price;
drRow["num"] = num;
drRow["total"] = price * num;
dtData.Rows.Add(drRow);
}
XAMLファイル
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns ="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="日付" Binding="{Binding date, StringFormat={}{0:yyyy/MM/dd}}" />
<DataGridTextColumn Header="商品名" Binding="{Binding name}" />
<DataGridTextColumn Header="単価" Binding="{Binding price, StringFormat={}{0:C}, ConverterCulture=ja-JP}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="数量" Binding="{Binding num, StringFormat={}{0:#,0}}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="合計" Binding="{Binding total, StringFormat={}{0:C}, ConverterCulture=ja-JP}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
ディスカッション
コメント一覧
まだ、コメントがありません