Изменить культуру приложения Silverlight - PullRequest
5 голосов
/ 01 июля 2010

Я сейчас работаю над приложением Silverlight.У меня есть несколько блоков данных / текстовых блоков, где я использую стандартную привязку для отображения значений, некоторые из которых являются датами.например,

<sdk:DataGrid AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding Path=MyCollection}">
  <sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Binding="{Binding Path=Name, Mode=OneWay}" Header="Agent"/>
    <sdk:DataGridTextColumn Binding="{Binding Path=UpdateTime, Mode=OneWay}" Header="Update Time"/>
  </sdk:DataGrid.Columns>
</sdk:DataGrid>
<TextBlock Text="{Binding Path=LastUpdatedTime}"/>

Это отлично связывает, но даты всегда отображаются в американском стиле (м / д / у), тогда как я хочу показать их в британском стиле (д / м / у).Я попытался установить культуру, используя теги HTML на странице, на которой размещено приложение

<param name="uiculture" value="en-GB" />
<param name="culture" value="en-GB" />

, и на Application_Start моего приложения Silverlight

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");

, но ни одно из них не даетразница.У меня есть пользовательский класс, который реализует интерфейс IValueConverter, я добавил точку останова в метод Convert и параметр CultureInfo, который передается в en-US, как мне изменить культуру?

Ответы [ 3 ]

4 голосов
/ 10 декабря 2010

Добавление следующей строки в конструктор моей формы исправило эту проблему:

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

С http://timheuer.com/blog/archive/2010/08/11/stringformat-and-currentculture-in-silverlight.aspx

0 голосов
/ 27 апреля 2011

Установка значения из вида кода идет вразрез с подходом MVVM и свойства зависимостей: вы можете захотеть увидеть эту статью SO: Как переключить UI Культура привязки данных на лету в Silverlight

0 голосов
/ 01 июля 2010

В конвертере используйте код ниже

CultureInfo ci = new CultureInfo("en-GB");
return value.ToString(ci);
...