.net Prism本地化问题:未使用正确的数字和日期时间格式

.net Prism本地化问题:未使用正确的数字和日期时间格式,.net,wpf,localization,prism,currentculture,.net,Wpf,Localization,Prism,Currentculture,我有一个使用Prism 4.0编写的应用程序。它有很多视图,这些视图具有绑定到ViewModel属性的不同控件。我的应用程序中没有模型。其中一些控件将日期时间和十进制值可视化。在某些地方,字符串表示具有正确的格式,但在某些地方却没有。但是,如果我将这些decimal和datetime属性表示为字符串属性,并对基础值调用ToString方法,那么它们的格式将是正确的。因此,我的ViewModel线程的CurrentThread.CurrentCulture是正确的。但是数据绑定器或Prism或任何

我有一个使用Prism 4.0编写的应用程序。它有很多视图,这些视图具有绑定到ViewModel属性的不同控件。我的应用程序中没有模型。其中一些控件将日期时间和十进制值可视化。在某些地方,字符串表示具有正确的格式,但在某些地方却没有。但是,如果我将这些decimal和datetime属性表示为字符串属性,并对基础值调用ToString方法,那么它们的格式将是正确的。因此,我的ViewModel线程的CurrentThread.CurrentCulture是正确的。但是数据绑定器或Prism或任何代码将datetime和十进制值转换为字符串线程区域性似乎是不正确的,或者它们根本没有使用当前区域性。我的调试技能还不足以让我走到幕后,但我认为神奇就发生在这里:

    [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设置为当前区域性。

您可能会对此感兴趣是的,这实际上是我在阅读了您在评论中的链接后修复它的方式。谢谢