none
DataGridTextColumn での数値の右詰めについて RRS feed

  • 質問

  • VS2017,C# で運用しています。

    DataGridのcolumnにて、数値を右詰めできる簡単な方法として、<Style>を使わずに
    <DataGridTextColumn > の中で、StringFormat を利用し、空白詰めすれば、できるのではないかと考えています。

     0詰めなら、
        <DataGridTextColumn Binding="{Binding snum ,StringFormat={}{0:D4} }" >
     で、行けるのですが、空白詰めが分かりません。

      なお、右詰めの機能としては、<DataGridTextColumn.ElementStyle>で行えば、出来ることは承知しています。

        <DataGridTextColumn.ElementStyle>
            <Style>
                <Setter Property="TextBlock.HorizontalAlignment" Value="Right"/>
            </Style>
        </DataGridTextColumn.ElementStyle>
    2019年11月27日 1:20

回答

すべての返信

  • 書式でスペーサを使う場合、{0,4} のようにカンマを使います。0パディングと併用する場合は {0,4:d2} のようになります。

    2019年11月27日 1:44
  • Hongliangさん、さっそくの解答ありがとうございます。

    空白詰め、できました。

    ところが、実際にやってみると、私の考えは甘かったようで、DataGrid上ではきっちりした、右詰めになりませんでした。
    <DataGridTextColumn Binding="{Binding snum,StringFormat={}{0,4}}">
    具体的には、今回1桁台から3桁台を表示させているのですが、1桁台、2桁では、右端に空白が入り込んでしまいます。
    3桁台は、きっちり右詰めされている。

    例(空白をアンダーバーに変更しています)
      __1_
      _10_
      _100

    やはり、数値の右詰めは、<Style>を使えということでしょうね

    --------
     あと、私が、混乱していたのは、VS2017のXamlの画面上で、StringFormatの {}{0,4} のところを変更すると
     リアルタイムで 「”が必要です」とメッセージが出て、この表記方法はダメだなんだとあきらめていたのですが、
     メニューからのビルドをかけてみるとエラーは出ません。???

       


    2019年11月27日 2:59
  • // 考慮してると思っていましたが

    等幅フォントでなければ、そりゃあ空白と数字とで横幅は変わるでしょう。

    • 回答としてマーク エンバー 2019年11月27日 3:23
    2019年11月27日 3:01