Var*_*ain 26 c# wpf cultureinfo currentuiculture
我有一个以印度为基础的应用程序,我将文化设置为:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");
上面的代码是在调用Window - InitializeComponent方法之前设置的.
这仍然是在所有TextBox中显示$作为CurrencySymbol.
如果我将TextBox绑定如下,则显示"Rs".作为CurrencySymbol:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");
Run Code Online (Sandbox Code Playgroud)
ean*_*son 42
我想你需要添加以下内容.
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)));
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多:
http://www.west-wind.com/weblog/posts/2009/Jun/14/WPF-Bindings-and-CurrentCulture-Formatting
只给你一个例子,这就是我在我的程序初始化文化的基础上,用户设置,但你完全可以替代UserSettings.DefaultCulture和UserSettings.Default.UICultrue你想要的文化.
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)));
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*ert 10
对我来说,只要工作,如果我将此代码放入OnStartup覆盖方法:
public partial class App : Application
{
public App()
{
}
protected override void OnStartup(StartupEventArgs e)
{
var vCulture = new CultureInfo("de-DE");
Thread.CurrentThread.CurrentCulture = vCulture;
Thread.CurrentThread.CurrentUICulture = vCulture;
CultureInfo.DefaultThreadCurrentCulture = vCulture;
CultureInfo.DefaultThreadCurrentUICulture = vCulture;
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
base.OnStartup(e);
}
}
Run Code Online (Sandbox Code Playgroud)
Thread.CurrentThread.CurrentCulture =
System.Globalization.CultureInfo.GetCultureInfo("en-IN");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)
这将切换整个应用程序的默认语言.您只想在启动代码中使用它,因为此设置每个应用程序只能应用一次.您仍然可以在必要时覆盖单个表单,如下所示
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
Run Code Online (Sandbox Code Playgroud)
所有WPF元素都包含可以分配的语言属性,并确定用于格式化的Culture.
| 归档时间: |
|
| 查看次数: |
42494 次 |
| 最近记录: |