我回答上一个问题,提供了以下解决方案(并且帮助很大):
<sdk:Label>
<TextBlock Text="This is underlined" TextDecorations="Underline" />
</sdk:Label>
以下XAML似乎会达到相同的结果:
<TextBlock Text="This is underlined" TextDecorations="Underline" />
所以我的问题是:为什么要将TextBlock放入Label?这给你带来了什么好处?以这种或那种方式做到这一点的标准是什么?
正如您可能猜到的那样,XAML对象可能存在一些我尚未理解的基础。
答案 0 :(得分:1)
在大多数情况下,它不会给你任何好处。
事实上,在您定义的情况下, TextBlock 应该不包装标签。
标签是 ContentControl 。它使用 ContentTemplate 呈现给它的任何类型的内容。默认情况下,当您尝试呈现字符串时,它会在内部使用 TextBlock 来呈现它。
所以,以下是相同的:
<Label>
Text
</Label>
<Label>
<TextBlock>
Text
</TextBlock>
</Label>
在这种情况下,如果您使用App.xaml中的隐式样式定义了自定义 ContentTemplate ,那么使用 Label 只会为您带来优势,以便将其应用于应用程序中的所有标签。
否则,它是相同的,如果唯一要求是显示一些带下划线的文本,则只应使用 TextBlock 。