我有一个基于印度的应用程序,并且将Culture设置为:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");

上面的代码在调用Window.InitializeComponent()方法之前被调用。

仍然在所有TextBox中将$显示为CurrencySymbol。

如果我按以下方式绑定(bind)文本框,它将Rs.显示为CurrencySymbol:
Text="{Binding Salary,Mode=TwoWay,StringFormat=C,ConvertCulture=en-IN}".

最佳答案

我认为您将需要添加以下内容。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
            XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

在此处了解更多信息:

http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting

仅举一个例子,这就是我基于用户设置在程序中初始化Culture的方式,但是您可以简单地将UserSettings.DefaultCultureUserSettings.Default.UICultrue替换为所需的Culture。
private static void InitializeCultures()
{
    if (!String.IsNullOrEmpty(UserSettings.Default.Culture))
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo(UserSettings.Default.Culture);
    }
    if (!String.IsNullOrEmpty(UserSettings.Default.UICulture))
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserSettings.Default.UICulture);
    }

    FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
        XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}

关于c# - 在WPF应用程序中全局设置文化(en-IN),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7454024/

10-13 06:34