1

以前の質問に答えます。次の解決策が提供されました (そして大いに役立ちました)。

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

次の XAML でも同じ結果が得られるようです。

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

だから私の質問は: TextBlock を Label に入れたいのはなぜですか? それはあなたにどのような利点をもたらしますか?何らかの方法でそれを行う基準は何ですか?

ご想像のとおり、XAML オブジェクトには、私がまだ理解していない基本的なことがあります。

4

1 に答える 1

1

ほとんどの一般的なケースでは、利点はありません。

実際、定義した場合、TextBlockをLabelでラップしないでください。

LabelContentControlです。ContentTemplateを使用して、指定された任意のタイプのコンテンツをレンダリングします。デフォルトでは、文字列をレンダリングしようとすると、内部でTextBlockを使用してレンダリングされます。

したがって、以下は同一です。

<Label>
    Text
</Label>

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

この場合、アプリケーション内のすべてのラベルに適用されるように、App.xaml 内で暗黙的なスタイルを使用して定義されたカスタムContentTemplateがある場合にのみ、 Labelを使用すると利点が得られます。

それ以外の場合は同じであり、下線付きのテキストを表示することが唯一の要件である場合は、 TextBlockのみを使用する必要があります。

于 2012-08-09T18:20:00.050 に答える