2

カスタムタイプ ( SINumber、適切な単位とプレフィックスを持つ SI 番号を表す) があります。SINumberfine と overrideにバインドできますSINumber.ToString()が、表示されるのは SINumber.ToString() を呼び出した結果です。

たとえば、SIMeasurement はSINumber、SI 値が 3099999.9046325684 Ω のタイプです。次のバインディングを使用すると、3.09999990463257 MΩ の出力が得られます。

<TextBlock Text="{Binding SINMeasurement}"></TextBlock>

単位 (Ω) と接頭辞 (M = メガ) の会話は正しいですが、問題は表示される数字の数にあります。IFormatProvider ICustomFormatterカスタム フォーマッタ (実装?) を使用して Binding を解釈しStringFormat、SI ロジック (プレフィックスを変更) を組み込んで3.10 MΩを表示できるようにしたいと考えています。以下は、私が使用したい Binding の例です。精度はカスタマイズ可能 (この場合は 0.00) で、単位の位置は「U」によって決定されます。

<TextBlock Text="{Binding SINMeasurement, StringFormat='{}{0:0.00 U}'}"></TextBlock>

何かご意見は?SINumber.ToString()必要な精度はアプリケーション内の場所によって異なるため、ハードコードされた を使用したくありません。

前もって感謝します。

4

1 に答える 1

0

データ型がIFormattableインターフェイスを実装するようにします。メソッドpublic string ToString(string format, IFormatProvider formatProvider)は、Binding に指定したStringFormatを使用して、Binding がオブジェクトを文字列に変換するたびに呼び出されます。

于 2012-10-28T13:33:34.717 に答える