Пользовательские определения DateFimeFormat WPF в культуре - PullRequest
2 голосов
/ 03 января 2011

У меня были проблемы со строковым форматом DateTime в моем приложении WPF. Я реализовал Исправление интернационализации , которое нашел здесь: http://www.nbdtech.com/Free/WpfBinding.pdf, а также в нескольких различных вопросах StackOverflow.

Это прекрасно работает для строковых форматов DateTime, специфичных для культуры / региона. Однако, когда я делаю пользовательские изменения в формате datetime в культуре, например:

CultureInfo ci = new CultureInfo("en-US");
ci.DateTimeFormat.DateSeparator = ".";

Это полностью игнорируется в некоторых элементах управления, например: DataGrid. В то время как в других, таких как RichTextBox и DatePicker, он работает отлично. Вот мой метод OnStartup в App.xaml.cs:

protected override void OnStartup(StartupEventArgs e)
    {
        // Set CultureInfo
        CultureInfo ci = new CultureInfo("en-US");

        ci.DateTimeFormat.DateSeparator = ".";

        Thread.CurrentThread.CurrentCulture = ci;
        Thread.CurrentThread.CurrentUICulture = ci;

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

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 03 января 2011

Yikes, который выглядит как довольно неприятный обходной путь.Я боялся бы других побочных эффектов, которые это могло бы иметь, особенно когда имеешь дело с датой и временем.Почему бы вместо этого не использовать преобразователь значений ?

...