ComboBox 项目的货币格式设置

发布于 2024-07-08 15:31:55 字数 154 浏览 14 评论 0原文

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

编辑:

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

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

I have a ComboBox bound to an ObservableCollection of decimals. What is the correct way to apply our currency converter to the items?

Edit:

a) I have an existing currency converter that I must use
b) .NET 3.0

Do I need to template the items?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

失眠症患者 2024-07-15 15:31:55

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

<ComboBox ItemStringFormat="c">

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

You can use the ItemStringFormat property on ComboBox to tell it how to format each of its items:

<ComboBox ItemStringFormat="c">

However, be aware that when using "c" as a currency formatter, it will use the currency defined by the local machine. If your values are defined in $ but your client PC is running with pounds or yen as their currency symbol, they won't be seeing what you want them to see.

南城追梦 2024-07-15 15:31:55

如果您有一些代码来进行转换,那么最好的选择确实是通过模板通过 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 并调用您的代码将给定金额转换为格式化字符串。

Your best bet if you have some code to do the conversion is indeed to run each item through an IValueConverter via a template.

<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}" />

So you just define your CurrencyConverter class such that it implements IValueConverter and calls your code to turn the given amount into a formatted string.

原来是傀儡 2024-07-15 15:31:55

在绑定表达式中使用 StringFormat,例如

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

参见此 博客了解更多详细信息。

A ValueConverter 是另一种方式 - StringFormat 不适用于 .NET3.0,它需要 WPF3.5 SP1。

Use StringFormat in the Binding expression like

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

See this blog for more details.

A ValueConverter is another way - StringFormat doesnt work on .NET3.0 it needs WPF3.5 SP1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文