2

小数のObservableCollectionにバインドされたComboBoxがあります。通貨コンバーターをアイテムに適用する正しい方法は何ですか?

編集:

a)使用しなければならない既存の通貨コンバーターがありますb).NET 3.0

アイテムをテンプレート化する必要がありますか?

4

3 に答える 3

10

ComboBoxのItemStringFormatプロパティを使用して、各アイテムのフォーマット方法を指示できます。

<ComboBox ItemStringFormat="c">

ただし、通貨フォーマッタとして「c」を使用する場合は、ローカルマシンで定義された通貨を使用することに注意してください。値が$で定義されているが、クライアントPCが通貨記号としてポンドまたは円を使用して実行されている場合、クライアントPCには表示したいものが表示されません。

于 2008-11-17T03:42:20.670 に答える
2

変換を行うためのコードがある場合の最善の策は、実際には、テンプレートを介して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クラスを定義するだけです。

于 2008-11-17T04:51:18.207 に答える
0

次のようなBinding式でStringFormatを使用します

<TextBox Text="{Binding Path=Value, StringFormat=Amount: {0:C}}"/>

詳細については、このブログを参照してください。

ValueConverterは別の方法です-StringFormatは.NET3.0では機能しません。WPF3.5SP1が必要です。

于 2008-11-17T03:37:47.433 に答える