Проблема локализации Prism: правильный номер и формат даты и времени не используются - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть приложение, написанное с использованием Prism 4.0.Он имеет много видов, которые имеют различные элементы управления, которые привязываются к свойствам ViewModel (в моем приложении нет моделей).Некоторые из этих элементов управления отображают дату и время в десятичном формате.В некоторых местах строковые представления имеют правильный формат, а в некоторых - нет.Но если я представлю эти десятичные свойства и свойства datetime как строковые свойства и вызову методы ToString () для базовых значений, то их формат будет правильным.Поэтому CurrentThread.CurrentCulture моего потока ViewModel является правильным.Но код привязки данных, или 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 использовать правильный формат числа и даты и времени в любом месте

1 Ответ

0 голосов
/ 03 февраля 2012

Размещение следующей строки кода в коде запуска может решить проблему:

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

Это установит LanguageProperty для всех элементов управления WPF в соответствии с текущей культурой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...