【问题标题】:Bug or Feature in TextBlock in Silverlight 4?Silverlight 4 中 TextBlock 中的错误或功能?
【发布时间】:2011-11-16 10:54:04
【问题描述】:

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

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

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

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

文本块 1:2011 年 11 月 16 日下午 12:49
文本块 2:2011 年 11 月 16 日12 点 49 分。

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

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

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

【问题讨论】:

  • 确实很奇怪。您是否注意到 Run 类的 Text 属性不是 DependencyProperty?我想知道在这种情况下绑定是如何工作的。我尝试在两个绑定中放置一个转换器,在运行绑定中,传递给 Convert 方法的区域性参数为 NULL。我会说这是一个错误

标签: silverlight-4.0 textblock


【解决方案1】:

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

Tim Heuer 有一个 blog post 题为“Silverlight 中的 StringFormat 和 CurrentCulture”。

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

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

这并不能解释为什么它对 &lt;Run&gt; 正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多