2

非常に単純な位置の読み取りがあります。これは、スタイルが適用された単なるTextBlockです。そのスタイルでは、私はそれをそのように設定しました(これよりも多くのプロパティがありますが、簡潔にするためにそれらを取り出しました):

    <Style x:Key="NumberStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="TextAlignment" Value="Center" />
    </Style>

これで、このスタイルを使用するディスプレイが1つあり、0.0から30000.0までの数値が表示されます。問題は、テキストを中央に配置しているため、数字(急激に変化する場合)がいたるところにジャンプし、少し気になることです。これが行われないように文字列をフォーマットしたいと思います。

XAMLでこのConverterParameterを試しました:

ConverterParameter='\{0:00000.0\}'

パディングは適切に行われますが、00032.5のような数値が表示されます。次に、をに置き換えました0#、最終的にはのように動作し{0:0.0}ます。私はMSDNのドキュメントを調べましたが、他に役立つものは見つかりませんでした。

私が思いつくことができる唯一のことは、これを行うために新しいIValueConverterを作成する必要があるということです。つまり、Convert()メソッドではparameter、自分の特殊文字を取得して解析する必要があります。そして、これを検出したら、欠落している数字をスペースに置き換えます。

しかし、私がここで本当に学ぼうとしているのは、これは、私が知らないフォーマット文字列で別の文字を使用するだけで実行できるのでしょうか。

4

2 に答える 2

3

{0,7}(7つの位置に引数を表示し、左側にスペースを埋める)のようなものが必要だと思います。ただし、この場合でも、テキストがジャンプしないようにするには、等幅フォントを使用するか、少なくともスペース文字の幅が数字の幅と等しいフォントを使用する必要があります。

于 2011-01-04T23:07:02.287 に答える
2

{}{0,10:#,0}10文字のフィールドを試してください。

ただし、フォントが固定幅でない場合、これは奇妙な結果をもたらすことに注意してください。Kaxamlで試してみましたが、機能しますが、テキストがプロポーショナルフォントと一致しません。

于 2011-01-04T23:25:32.440 に答える