ComboBox项目的货币格式

时间:2008-11-17 03:33:20

标签: wpf combobox converters

我有一个ComboBox绑定到一个小数的ObservableCollection。将货币转换器应用于物品的正确方法是什么?

编辑:

a)我有一个必须使用的现有货币转换器 b).NET 3.0

我是否需要对项目进行模板化?

3 个答案:

答案 0 :(得分:8)

您可以使用ComboBox上的ItemStringFormat属性告诉它如何格式化每个项目:

<ComboBox ItemStringFormat="c">

但是,请注意,当使用“c”作为货币格式化程序时,它将使用本地计算机定义的货币。如果您的值是以$定义的,但您的客户端PC以磅或日元作为其货币符号运行,则他们将无法看到您希望他们看到的内容。

答案 1 :(得分: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}" />

因此,您只需定义您的CurrencyConverter类,以便它实现IValueConverter并调用您的代码将给定数量转换为格式化字符串。

答案 2 :(得分:0)

在Binding表达式中使用 StringFormat ,如

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

请参阅此blog for more details.

ValueConverter是另一种方式 - StringFormat不能在.NET3.0上运行它需要WPF3.5 SP1。