1

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

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

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

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

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

正如您可能猜到的那样,XAML 对象可能有一些基本的东西我还不了解。

4

1 回答 1

1

在大多数一般情况下,它不会给您带来任何优势。

实际上,在您定义的情况下,TextBlock应该用Label包装。

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

因此,以下是相同的:

<Label>
    Text
</Label>

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

在这种情况下,仅当您使用 App.xaml 中的隐式样式定义了自定义ContentTemplate以便将其应用于应用程序中的所有标签时,使用标签才会给您带来优势。

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

于 2012-08-09T18:20:00.050 回答