2011-11-16 52 views
5

我一直有在Silverlight 4
我有以下情况的一些乐趣TextBlock的绑定:Silverlight 4中的TextBlock中的错误或功能?

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

哪里DateSystem.DateTime类型的属性。
我没有改变应用程序的当前文化。

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

TextBlock的1:11/16/2011下午12点49
的TextBlock 2:16.11.2011г. 12:49ч。

有趣的是,第TextBlock格式使用EN-US文化(或默认不变的一个),而第二个使用BG-BG文化的日期和时间。 事情得到,因为MSDN documentation为Silverlight TextBlock控件更奇怪的说:

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

我在这里丢失了什么,或者它可以被认为是Silverlight 4中的错误?

+1

奇怪了。你有没有注意到Run类的Text属性不是DependencyProperty?我想知道在这种情况下绑定是如何工作的。我已经尝试在两个绑定中放置一个转换器,并在Run绑定中传递给Convert方法的文化参数为NULL。我会说这是一个错误 – Bruno

回答

2

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

蒂豪特有一个blog post题为“SilverFormat和Silverlight的CurrentCulture”关于此。

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

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

这并不能解释为什么它正常的<Run>