DateTime Не отображается с текущим форматом культуры в Datagrid, ListView - PullRequest
14 голосов
/ 03 сентября 2010

В WPF я пытаюсь связать свойство даты в DataGrid и могу сортировать, только если оно связано со свойством DateTime.

Приложение должно отображать дату в формате, соответствующемнастройки региона и языка пользователя.

Проблема в том, что когда дата является свойством string, она отображается в соответствии с настройками региона, но когда свойство привязано к DateTime, формат даты по умолчанию устанавливается по умолчанию.к американскому, а не к правильному региону.

Поэтому, если он связан со свойством string, сортировка по столбцу не работает, а если он связан со свойством DateTime, он не преобразуется вправильный регион.

Ответы [ 2 ]

29 голосов
/ 03 сентября 2010

Это связано с тем, что система привязки использует культуру, определенную свойством FrameworkElement.Language, которое не соответствует автоматически текущей культуре (что является немного глупым ИМО, но так оно и есть). .).

К счастью, есть простой способ обойти это, вам просто нужно переопределить метаданные для свойства Language в статическом конструкторе вашего приложения, , как показано здесь :

public partial class App : Application
{
    static App()
    {
        FrameworkElement.LanguageProperty.OverrideMetadata(
            typeof(FrameworkElement),
            new FrameworkPropertyMetadata(
                XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
    }
}
2 голосов
/ 04 сентября 2010

Пример Локализация из WPF Application Framework (WAF) показывает, как решить вашу проблему.

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