WPF控件似乎没有.Culture
属性,或者任何其他控制文本本地化的明显方法。更糟糕的是,在我的测试机器上它甚至不尊重系统区域设置。我的应用程序需要为德国人工作,因此测试机器运行德语版本的Windows,C#尊重这一点。因此
String.Format('{0}', 3.5) == "3,5"
但如果我将本地化留给WPF,例如通过将数字属性直接绑定到标签或数据网格单元格,我看到某种美国格式。因此,如果我将3.5
格式化为货币,那么我会在屏幕上看到$3.50
。
所以:
理想情况下,“修复”意味着默认情况下使其尊重系统区域设置,同时让我明确控制特定事物。因此,如果我在澳大利亚PC上打开德国发票,理想的情况是价格看起来像€3.50
。
答案 0 :(得分:3)
WPF确实默认为美国,无论系统设置如何。
您可以在App.Xaml.cs中执行应用程序范围的设置:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// Thread settings are separate and optional
// affect Parse and ToString:
// Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("nl-NL");
// affect resource loading:
// Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("nl-NL");
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(
CultureInfo.CurrentCulture.IetfLanguageTag)));
base.OnStartup(e);
}