none
【WPF】DataGridのdecimal型の列の表示形式について RRS feed

  • 質問

  • DataTableにdecimal型の列を作成して、それをDataGridのDataContextに設定しました。
    で、表示されたDataGridのdecimal型の列をカンマ付きの形式(###,##0)にしたいのですがどうすればよいでしょうか?

    フォームのロード時に以下のようにコーディングして右揃えにしたのですが
    Style style = new Style();
    style.Setters.Add(new Setter(DataGrid.HorizontalAlignmentProperty, HorizontalAlignment.Right));
    dataGrid.Columns[0].CellStyle = style;
    同じようなやり方で書式を設定できますか?

    2009年11月27日 8:32

回答

すべての返信

  • StringFormatを使えばできると思いますよ。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年11月27日 14:08
    モデレータ
  • >trapemiyaさん
    回答ありがとうございます。

    ということはDataGridのdecimal型の列をstring型にするしかないということですね。
    その方向で進めてみたいと思います。
    2009年11月29日 9:12
  • いえいえ、string型にするのでは意味がありません。以下が参考になると思います。

    WPF 3.5 SP1の新機能 - StringFormat
    http://d.hatena.ne.jp/Yamaki/20080527/1211874556

    [WPF][C#]待望のDataGridコントロール!!お試し
    http://blogs.wankuma.com/kazuki/archive/2008/08/15/153144.aspx

    ところでXAMLではなく、コードで指定されたいのでしょうか?ちょっとこれは私も調べなければわかりません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク yty0918 2009年11月30日 0:52
    2009年11月29日 10:53
    モデレータ
  • >trapemiyaさん
    回答ありがとうございます。

    リンクを参考にさせていただきました。
    以下をXAMLに追加するようにしました。

    <my:DataGridTextColumn Header="金額" Binding="{Binding 金額, StringFormat=C}"/>

    このままだと$が先頭についているのですが¥にする方法はまた別途調査したいと思います。

    2009年11月30日 0:52
  • このままだと$が先頭についているのですが¥にする方法はまた別途調査したいと思います。

    CultureInfo クラスを使って、現在のカルチャを置き換えるといいと思います。

    using System.Threading;
    using System.Globalization;

    ・・・・・・・
    Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP");
    2009年11月30日 1:44
    モデレータ
  • ¥にする方法はDataGridのLanguageをja-JPにすることで解決しました。
    <my:DataGrid (略) Language="ja-JP">
    2009年12月8日 2:53