代码之家  ›  专栏  ›  技术社区  ›  Fermin

更改Silverlight应用程序的区域性

  •  5
  • Fermin  · 技术社区  · 14 年前

    我正在开发一个Silverlight应用程序。我有一些DataGrids/TextBlock,在这里我使用标准绑定来显示值,其中一些是日期。例如

    <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}"/>
    

    这个绑定很好,但是日期总是显示为美式(m/d/y),而我想显示为英国式(d/m/y)。我尝试使用承载应用程序的页面上的两个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 回复  |  直到 13 年前
        1
  •  4
  •   Fermin    13 年前

    将以下行添加到表单的构造函数修复了此问题:

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

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

        2
  •  0
  •   Community Egal    7 年前

    设置代码类型的值与MVVM和依赖属性方法相反:您可能希望看到本文: How to switch UI Culture of data binding on the fly in Silverlight

        3
  •  -1
  •   Ragunathan    14 年前

    在转换器中使用以下代码

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