Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 组合框项目上的货币格式_Wpf_Combobox_Converters - Fatal编程技术网

Wpf 组合框项目上的货币格式

Wpf 组合框项目上的货币格式,wpf,combobox,converters,Wpf,Combobox,Converters,我有一个组合框绑定到一个可见的小数集合。将货币转换器应用于项目的正确方法是什么 编辑: a) 我有一个必须使用的现有货币转换器 b) .NET3.0 是否需要为项目设置模板?在绑定表达式中使用StringFormat,如 <TextBox Text="{Binding Path=Value, StringFormat=Amount: {0:C}}"/> 看到这个了吗 A是另一种方式-StringFormat在.NET3.0上不起作用,它需要WPF3.5 SP1 您可以使用Com

我有一个组合框绑定到一个可见的小数集合。将货币转换器应用于项目的正确方法是什么

编辑:

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


是否需要为项目设置模板?

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

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

看到这个了吗


A是另一种方式-StringFormat在.NET3.0上不起作用,它需要WPF3.5 SP1

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

<ComboBox ItemStringFormat="c">


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

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

我们使用特定的货币转换器,我确实需要使用该转换器。谢谢。是的,如果你有需要调用的代码,那么IValueConverter实现是最好的方法。但是我是通过项目模板来实现的吗?设置所选值的正确方法是什么?对我来说很有用!这正是我想要的。我只是想格式化一个日期,并尝试使用IConverter在ItemsSource或其他地方设置StringFormat。这在谷歌搜索了很多次之后就成功了!谢谢