我可以翻译中文。这段内容是关于在数据网格中绑定货币值并进行格式化的,相关的XAML如下:
当文化设置为
这是在区域设置为
你可以看到文化程度得到了一定的尊重。然而,输出结果并不是我所期望的。
对于
在我的XAML代码中,我手动设置了文化(仅用于测试),使用以下代码:
<telerik:RadGridView Grid.Row="0" Grid.ColumnSpan="2" x:Name="dataGrid"
AutoGenerateColumns="False" HorizontalAlignment="Stretch"
VerticalAlignment="Top" Margin="0,25,0,0" IsSearchingDeferred="True"
IsReadOnly="True" IsLocalizationLanguageRespected="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat=C}"
Header="{x:Static properties:Resources.AddressLine3}"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
这是当前绑定到列中的值(该值作为数字文字来自数据库):
12345678.90
当文化设置为
en-US
时,此值将被输出。12345678.90 //notice the decimal point
这是在区域设置为
nl-NL
时输出的值。12345678,90 //notice the comma
你可以看到文化程度得到了一定的尊重。然而,输出结果并不是我所期望的。
对于
en-US
文化,我希望输出结果为$12,345,678.90
。对于nl-NL
文化,我希望输出结果为€ 12.345.680,00
。在我的XAML代码中,我手动设置了文化(仅用于测试),使用以下代码:
public MainWindow()
{
//I am toggling between the following cultures
CultureInfo ci = new CultureInfo("nl-NL");
//CultureInfo ci = new CultureInfo("ja-JP");
//CultureInfo ci = new CultureInfo("en-US");
//I am forcing the UI to use the culture I specify
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
this.Language = XmlLanguage.GetLanguage(ci.Name);
Properties.Resources.Culture = ci;
//these are used to test that to string formatting works as expected
//when using the debugger
float price = 12345678.90F;
string currencyToDisplay = price.ToString("C");
InitializeComponent();
}
问题
为什么即使我指定了货币格式,货币符号和数字分隔符也没有显示出来呢?
手动在代码后台中进行相同数字的格式化可以给我想要的结果,但我想在XAML中完成这个操作。
我尝试过的方法 我已经尝试了以下解决方法,但都无济于事:
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat=C}" Header="{x:Static properties:Resources.AddressLine3}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat={}{0:C}}" Header="{x:Static properties:Resources.AddressLine3}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat=\{0:C\}}" Header="{x:Static properties:Resources.AddressLine3}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat='C'}" Header="{x:Static properties:Resources.AddressLine3}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Path=VALUATION, StringFormat=c}" Header="{x:Static properties:Resources.AddressLine3}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding VALUATION}" DataFormatString="{}{0:C}" Header="{x:Static properties:Resources.AddressLine3}"/>
我有没有遗漏什么?
dataGrid
,数据以以下方式绑定:dataGrid.ItemsSource = ToDataTable(results).DefaultView;
。数据绑定没有问题。 - Dodzi Dzakumaxml:lang="nl-NL"
。 - XAMlMAX