Pracuję obecnie nad aplikacją Silverlight. Mam kilka datagridów/bloków tekstowych, w których używam standardowego wiązania do pokazywania wartości, z których niektóre są datami. na przykładZmień kulturę aplikacji 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}"/>
To wiąże się w porządku, ale terminy są zawsze wyświetlane jako stylu US (m/d/r), natomiast chcę pokazać im stylu UK (d/m/r). Próbowałem ustawienie kulturę używając obu znaczników HTML na stronie hostingu aplikacji
<param name="uiculture" value="en-GB" />
<param name="culture" value="en-GB" />
i na Application_Start
mojej aplikacji Silverlight
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
ale żadna z nich nie robi żadnej różnicy. Mam niestandardową klasę, która implementuje interfejs IValueConverter
, dodałem punkt przerwania w metodzie Convert, a parametr CultureInfo, który jest przekazywany, to en-US, w jaki sposób mogę zmienić kulturę?
Czy powinienem użyć konwertera dla każdej DataColumn/TextBlock wyświetlającej datę? – Fermin
tak. Ale jeśli chcesz użyć globalnego, W konstruktorze MainPage lub w przypadku zdarzenia Loaded użyj poniżej (tutaj nie ma potrzeby stosowania konwertera) CultureInfo en = new CultureInfo ("en-GB"); Thread.CurrentThread.CurrentCulture = en; – Ragunathan
Jak już wspomniałem w moim pierwszym wpisie, próbowałem już ustawić ustawienie CurrentCulture w zdarzeniu Application_Start i nie zmienia to sposobu wyświetlania dat. – Fermin