显示货币的差异

时间:2016-12-17 17:18:37

标签: c# wpf

在使用货币值格式化字符串时,我注意到WPF显示它的方式有所不同。

格式化XAML中的5,99 €值时,WPF会将其显示为<TextBlock Text="{Binding Total, StringFormat={}{0:C}}"/> return 5.99m;

€ 5,99

当我在代码后面格式化时,它会将其显示为<TextBlock Text="{Binding TotalString}"/> return string.Format("{0:C}", 5.99m);

Private Sub TextBox6_AfterUpdate()

    If WorksheetFunction.CountIf(Sheets("Mastor_list").Range("D1", Range("D1").End(xlDown)), Me.TextBox6.Value) = 0 Then
        Me.TextBox6.Value = ""
        Exit Sub
    End If

    With Me
        .TextBox1 = WorksheetFunction.VLookup(CLng(Me.TextBox6), Sheets("Mastor_list").Range("Lookup"), 5, 0)
        .TextBox2 = WorksheetFunction.VLookup(CLng(Me.TextBox6), Sheets("Mastor_list").Range("Lookup"), 6, 0)
        .TextBox3 = WorksheetFunction.VLookup(CLng(Me.TextBox6), Sheets("Mastor_list").Range("Lookup"), 7, 0)
        .TextBox4 = WorksheetFunction.VLookup(CLng(Me.TextBox6), Sheets("Mastor_list").Range("Lookup"), 8, 0)
        .TextBox5 = WorksheetFunction.VLookup(CLng(Me.TextBox6), Sheets("Mastor_list").Range("Lookup"), 10, 0)
    End With
End Sub

这是一个错误吗?

我得到了Windows 10,目标是.NET版本是4.5.2。

1 个答案:

答案 0 :(得分:1)

设置绑定的StringFormat时,WPF不使用CultureInfo.CurrentCulture,但默认情况下只使用en-US,或者通过设置元素(或其父级)指定的值{ {1}}财产。有关详细信息,请参阅this question

另一方面,Language确实使用string.Format。对于格式化货币的确切行为如何由用户配置。

例如,货币模式由注册表值CultureInfo.CurrentCulture控制,可以在控制面板中设置(抱歉是德语):

enter image description here

因此,您可能只是更改该设置以实现从StringFormat获得的格式化行为。