我目前正在开发Silverlight应用程序。我有一些datagrids / textblocks,我使用标准绑定来显示值,其中一些是日期。 e.g。
<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" />
和我的Silverlight应用程序的Application_Start
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
但这些都没有任何区别。我有一个实现IValueConverter
接口的自定义类,我在Convert方法上添加了一个断点,传入的CultureInfo参数是en-US,我该如何更改文化呢?
答案 0 :(得分:4)
将以下行添加到我的表单的构造函数中修复了此问题:
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
来自http://timheuer.com/blog/archive/2010/08/11/stringformat-and-currentculture-in-silverlight.aspx
答案 1 :(得分:0)
从代码类型设置值违反MVVM和依赖属性方法:您可能希望看到这篇SO文章: How to switch UI Culture of data binding on the fly in Silverlight
答案 2 :(得分:-1)
在转换器中使用以下代码
CultureInfo ci = new CultureInfo("en-GB");
return value.ToString(ci);