我在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中的错误?
答案 0 :(得分:2)
我们发现您需要确保正确设置控件的Language
以使其正确地遵循语言设置。在我们的例子中,它是货币符号,但我认为日期也会出现同样的问题。
Tim Heuer在Silverlight中有blog post名为&#34; StringFormat和CurrentCulture&#34;关于这个。
解决方案是将以下行添加到视图构造函数中:
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
这并不能解释为什么它适用于<Run>