ComboBoxアイテムの通貨の書式設定
-
08-07-2019 - |
質問
10進数のObservableCollectionにバインドされたComboBoxがあります。通貨コンバーターをアイテムに適用する正しい方法は何ですか?
編集:
a)使用する必要がある既存の通貨コンバーターがあります b).NET 3.0
アイテムをテンプレート化する必要がありますか?
解決
変換を行うためのコードがある場合は、テンプレートを介してIValueConverterを介して各アイテムを実行することをお勧めします。
<Window.Resources>
<my:CurrencyConverter x:Key="currencyConverter" />
<DataTemplate x:Key="thingTemplate" DataType="{x:Type my:Thing}">
<TextBlock
Text="{Binding Amount,Converter={StaticResource currencyConverter}}" />
</DataTemplate>
</Window.Resources>
<ComboBox
ItemSource="... some list of Thing instances ..."
ItemTemplate="{StaticResource thingTemplate}" />
したがって、IValueConverterを実装し、指定された金額をフォーマットされた文字列に変換するコードを呼び出すように、CurrencyConverterクラスを定義するだけです。
他のヒント
ComboBoxのItemStringFormatプロパティを使用して、各アイテムのフォーマット方法を指定できます。
<ComboBox ItemStringFormat="c">
ただし、&quot; c&quot;を使用する場合は、通貨フォーマッターとして、ローカルマシンで定義された通貨を使用します。値が$で定義されているが、クライアントPCがポンド記号または円記号を通貨記号として実行している場合、表示したいものは表示されません。
のようなバインディング式で StringFormat を使用します
<TextBox Text="{Binding Path=Value, StringFormat=Amount: {0:C}}"/>
こちらをご覧ください詳細についてはブログをご覧ください。
A ValueConverter は別の方法です-StringFormatは.NET3.0では機能せず、WPF3.5 SP1が必要です。
所属していません StackOverflow