Silverlight中的TextBlock文本属性与内容属性的区别

3
什么时候我应该使用<TextBlock>的文本属性,什么时候应该将我的文本放在<TextBlock>的内容中?
<TextBlock Text="Example Text" />

            vs.    

<TextBlock>Example Text</TextBlock>
2个回答

4
前者可以绑定,而后者在组合“运行”时特别有用:
<TextBlock Text="{Binding SomeProperty}"/>
<TextBlock>
    <Run>You have </Run>
    <Run Text="{Binding Count}"/>
    <Run>items.</Run>
</TextBlock>

3
使用Text属性已经变得很普遍,这是由于之前版本的Xaml解析器,但将文本作为内容放置更加自然,特别是如果您有HTML背景的话。
许多TextBlock要么包含简单的短文字块,要么被绑定。在我看来,这些事实倾向于使用Text属性。此外,任何可能的全球化都可能以将这些文字替换为绑定的方式结束。

AnthonyWJones说得很对:本地化是关键因素。在实践中,通常意味着所有花哨的多值插入实际上是在其他地方完成的,只有单个结果文本值绑定到Text属性。虽然多个运行的示例对于硬编码的英语来说“可以”,但对于商业应用程序来说并不适用。 - iCollect.it Ltd
1
@HiTech:安东尼的观点确实是有道理的,但我对“不适合商业应用”提出异议。这完全取决于所述应用程序是否需要全球化,而通常情况下并非如此。 - Kent Boogaart
@Kent Boogaart:现在我们开发的每个应用程序都应该支持本地化,否则这有点短视。难道我们真的要鼓励新手养成不良习惯(例如硬编码文本)吗?抱歉,除非你有更好的理由来证明“我们并不总是需要本地化”,否则我仍然坚持我的原始评论。 - iCollect.it Ltd
@HiTech:抱歉,但那太荒谬了。我可以用同样的“以防万一”的理由来证明各种浪费性劳动的必要性。原因很简单:全球化和本地化需要额外的努力,所以如果你确切知道这些努力是不必要的,那么支持它就是在浪费你自己的时间和客户的金钱。当然,你应该向客户清楚地说明这种权衡。 - Kent Boogaart
@Kent Boogaart:考虑到本地化的可能性并不等同于实际实现它。回到我的原点,如果你使用runs,你不能轻松地本地化这些字符串。就是这样。故事结束了。对我或我的客户来说没有额外的时间或成本。我已经本地化了许多应用程序,包括遗留应用程序,所以你无法说服我回到硬编码文本的任何地方 :) - iCollect.it Ltd
我本人已经本地化了许多应用程序。确实如此 - 随着时间和实践的积累,你会变得更加熟练。我深知全球化和本地化之间的区别。我承认我没有做过太多的本地化工作,但我倾向于在我看不到额外努力的情况下使东西“可全球化”。对我来说,直接将一些文本放入TextBlock中比“在其他地方处理”更快更容易。我们可能需要就这个问题达成不同意见 :) - Kent Boogaart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接