在Label中使用TextBox而不仅仅是TextBox有什么意义?

时间:2012-08-09 17:48:49

标签: silverlight

我回答上一个问题,提供了以下解决方案(并且帮助很大):

<sdk:Label>
    <TextBlock Text="This is underlined" TextDecorations="Underline" />
</sdk:Label>

以下XAML似乎会达到相同的结果:

    <TextBlock Text="This is underlined" TextDecorations="Underline" />

所以我的问题是:为什么要将TextBlock放入Label?这给你带来了什么好处?以这种或那种方式做到这一点的标准是什么?

正如您可能猜到的那样,XAML对象可能存在一些我尚未理解的基础。

1 个答案:

答案 0 :(得分:1)

在大多数情况下,它不会给你任何好处。

事实上,在您定义的情况下, TextBlock 应该包装标签

标签 ContentControl 。它使用 ContentTemplate 呈现给它的任何类型的内容。默认情况下,当您尝试呈现字符串时,它会在内部使用 TextBlock 来呈现它。

所以,以下是相同的:

<Label>
    Text
</Label>

<Label>
    <TextBlock>
        Text
    </TextBlock>
</Label>

在这种情况下,如果您使用App.xaml中的隐式样式定义了自定义 ContentTemplate ,那么使用 Label 只会为您带来优势,以便将其应用于应用程序中的所有标签

否则,它是相同的,如果唯一要求是显示一些带下划线的文本,则只应使用 TextBlock