棱镜本地化问题:不使用正确的数字和日期时间格式
我有一个使用Prism 4.0编写的应用程序。 它有很多视图有不同的控件绑定到ViewModel属性(我没有模型在我的应用程序)。 其中一些控件可视化日期时间和小数值。 在一些地方,字符串表示有正确的格式,但在某些地方它们没有。 但是,如果我将这些decimal和datetime属性表示为字符串属性并对基础值调用ToString()方法,那么它们的格式将是正确的。 所以我的ViewModel线程的CurrentThread.CurrentCulture是正确的。 但数据绑定器或Prism的或任何代码将日期时间和小数值转换为字符串线程文化似乎是不正确的,或者他们可能根本不使用当前的文化。 我的调试技能还不足以支撑幕布,但我认为魔术发生在这里(堆栈轨迹):
[Native to Managed Transition]
PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.GetValue(object item, int level)
PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k)
PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue()
PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.RawValue()
PresentationFramework.dll!System.Windows.Data.BindingExpression.TransferValue(object newValue, bool isASubPropertyChange)
PresentationFramework.dll!System.Windows.Data.BindingExpression.ScheduleTransfer(bool isASubPropertyChange)
PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.NewValueAvailable(bool dependencySourcesChanged, bool initialValue, bool isASubPropertyChange)
PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(int k, System.ComponentModel.ICollectionView collectionView, object newValue, bool isASubPropertyChange)
PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.OnSourcePropertyChanged(object o, string propName)
任何想法如何强制WPF和Prism在任何地方使用正确的数字和日期时间格式?
在启动代码中放置以下代码行可能会解决问题:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
这会将所有WPF控件的LanguageProperty设置为当前文化。
链接地址: http://www.djcxy.com/p/75095.html上一篇: Prism localization issue: correct number and datetime format is not used