在使用货币值格式化字符串时,我注意到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。
答案 0 :(得分:1)
设置绑定的StringFormat
时,WPF不使用CultureInfo.CurrentCulture
,但默认情况下只使用en-US
,或者通过设置元素(或其父级)指定的值{ {1}}财产。有关详细信息,请参阅this question。
另一方面,Language
确实使用string.Format
。对于格式化货币的确切行为如何由用户配置。
例如,货币模式由注册表值CultureInfo.CurrentCulture
控制,可以在控制面板中设置(抱歉是德语):
因此,您可能只是更改该设置以实现从StringFormat获得的格式化行为。