Silverlight 4中的TextBlock中的错误或功能?

时间:2011-11-16 10:54:05

标签: silverlight-4.0 textblock

我在Silverlight 4中使用TextBlock绑定获得了一些乐趣。
我有以下情况:

<TextBlock Text="{Binding Date, StringFormat=g}" />
<TextBlock>
    <Run Text="{Binding Date, StringFormat=g}"/>
<TextBlock>

Date属于System.DateTime类型的属性 我没有改变应用程序的当前文化。

我的机器文化是保加利亚(bg-BG)。 例如:

  

TextBlock 1:11/16/2011 12:49 PM
  TextBlock 2:16.11.2011г。 12:49ч。

有趣的是,第一个TextBlock使用en-Us文化(或默认的不变量)格式化日期和时间,而第二个使用bg-BG文化。 自从MSDN documentation Silverlight TextBlock控件说:

以来,事情变得更加奇怪
  

如果从XAML创建InlineCollection作为TextBlock对象元素的内部文本,或者如果通过设置Text属性创建,则InlineCollection包含一个包含该文本的Run

我在这里遗漏了什么,或者它可以被视为Silverlight 4中的错误?

1 个答案:

答案 0 :(得分:2)

我们发现您需要确保正确设置控件的Language以使其正确地遵循语言设置。在我们的例子中,它是货币符号,但我认为日期也会出现同样的问题。

Tim Heuer在Silverlight中有blog post名为&#34; StringFormat和CurrentCulture&#34;关于这个。

解决方案是将以下行添加到视图构造函数中:

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

这并不能解释为什么它适用于<Run>