Silverlight UI культура - PullRequest
       22

Silverlight UI культура

3 голосов
/ 21 октября 2011

В приложении Silverlight у меня есть столбец даты в сетке данных.Мне нужно, чтобы время отображалось в 24-часовом формате.Чтобы добиться этого, я изменил культуру пользовательского интерфейса в событии Application_Startup следующим образом:

    CultureInfo cinf = Thread.CurrentThread.CurrentUICulture.Clone() as CultureInfo;
    DateTimeFormatInfo f = cinf.DateTimeFormat.Clone() as DateTimeFormatInfo;
    System.Globalization.DateTimeFormatInfo df = new System.Globalization.DateTimeFormatInfo();
    string format = "MM/dd/yyyy HH:mm:ss";
    f.FullDateTimePattern = format;
    cinf.DateTimeFormat = f;
    Thread.CurrentThread.CurrentUICulture = cinf;

Но пользовательский интерфейс всегда выбирает формат времени данных, указанный в моих региональных настройках в моей ОС.Есть указатели?

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Не лучше ли определить необходимое форматирование для самой привязки? Что-то вроде: -

<sdk:DataGridTextColumn Header="SomeDate" Binding="{Binding SomeDate, StringFormat={}{0:MM/dd/yyyy HH:mm:ss}}" />

Причина, по которой ваш код не работает, заключается в том, что CultureInfo, используемый элементами управления, загруженными Xaml, определяется свойством Language элемента управления, загружающего Xaml. Я не думаю, что есть способ предоставить пользовательский CultureInfo в этом сценарии.

0 голосов
/ 21 октября 2011

Попробуйте также установить CurrentCulture, то есть:

Thread.CurrentThread.CurrentCulture = cinf;
...