2011-01-04 23 views
1

私は非常にシンプルな位置情報を取得しました。これは、スタイルが適用された単なるTextBlockです。そう(これ以上の特性があるが、私は簡潔にするためにそれらを取り出した)のようなそのスタイルで、私はそれを設定します。WPFの数値ディスプレイの埋め込み

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

は今、私はこのスタイルを使用して一つの表示を持っており、それが表示されます0.0〜30000.0の数字です。問題は、テキストをセンタリングしているので、数字が(急激に変化している場合)場所全体を飛び越え、少し邪魔になることです。私はそれをしないように私の文字列をフォーマットしたいと思います。

私は、XAMLでこのConverterParameter試してみました:

ConverterParameter='\{0:00000.0\}' 

をし、それが適切にパディングをしながら、私は00032.5のような数字を取得します。私は0#に置き換えましたが、それはちょうど{0:0.0}のように振る舞います。私はMSDN docsを見て、助けになるものは何も見ませんでした。

私が思いつくことができるのは、これを行うために新しいIValueConverterを書く必要があることだけです。言い換えると、Convert()メソッドでは、私はparameterをとり、私自身の特殊文字のために解析する必要があります。そして、私がこれを検出すると、失われた数字をスペースで置き換えます。

しかし、ここで私が実際に習得しようとしていることは、私が知らないフォーマット文字列内の別の文字を使うだけで済むのでしょうか?

答えて

1

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

ただし、フォントが固定幅でない場合、結果が奇妙になることに注意してください。私はKaxamlでそれを試して、それは動作しますが、テキストは比例フォントで整列していません。

+0

前の{}が何であるか分かりませんか?私はコンパイラエラーを生成するので、それはtypoだと仮定します... – Dave

+4

'{'文字が新しいマークアップ拡張を開始するWPF Bindingマークアップ拡張でformatパラメータをエスケープします。私はあなたがマークアップ拡張でそれを使用していたと思います。そうでない場合は、それらを削除してください。 – codekaizen

3

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

関連する問題