[英]WPF Overriding Current Culture is not reflecting in all controls or in UI elements
TextBlock 显示为具有当前文化格式的“NumberFormatInfo.NumberGroupSizes”。 但是 DataGrid 以不同的格式显示从查询中绑定到“double”的列。 我在做什么错误?
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-IN");
NumberFormatInfo myNumberFormatInfo = new CultureInfo("en-IN", true).NumberFormat;
int[] myGroupSize = { 3, 2, 2, 2 };
myNumberFormatInfo.NumberGroupSizes = myGroupSize;
myNumberFormatInfo.CurrencyGroupSizes = myGroupSize;
Thread.CurrentThread.CurrentCulture.NumberFormat = myNumberFormatInfo;
Thread.CurrentThread.CurrentUICulture.NumberFormat = myNumberFormatInfo;
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
它已通过使用 System.Reflection 解决;
var culture = CultureInfo.CurrentCulture;
var language = XmlLanguage.GetLanguage(culture.IetfLanguageTag + "-current");
var type = typeof(XmlLanguage);
const BindingFlags kField = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly;
type.GetField("_equivalentCulture", kField).SetValue(language, culture);
type.GetField("_compatibleCulture", kField).SetValue(language, culture);
if (culture.IsNeutralCulture) culture = CultureInfo.CreateSpecificCulture(culture.Name);
type.GetField("_specificCulture", kField).SetValue(language, culture);
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(language));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.