ButtonやHeaderedContentControlなど、テキストに下線が引かれているコンテンツコントロールのテンプレートを作成しようとしています。
Content="This text is underlined"
指定されたときにテキストに下線を付けたいだけです。
コンテンツが別のUIElementである場合は、通常どおり機能し続ける必要があります。
これと同じ質問をするほとんどの投稿は、コンテンツとして文字列に対してのみ機能するようにテンプレートを変更することに満足しています。Scott Guには、ボタンのスタイリングに関する優れた記事がありますが、この問題には対処していません。
次のサンプルは、文字列ではなくContent
型のインスタンスとして実際に渡す場合に機能します。TextBlock
確かに、ビジュアルツリーにはTextBlockがあるので、スタイルを設定する必要があります。おそらくこれはSivlerlightの制限です。
この例では、大きな赤いテキストとして両方を表示したい場合に、黒いテキストと大きな赤いテキストを示しています。
<navigation:Page.Resources>
<Style TargetType="TextBlock" x:Key="style123">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="FontSize" Value="72"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="TextDecorations" Value="Underline"/>
</Style>
</navigation:Page.Resources>
<StackPanel>
<!-- This doesn't work and shows black text -->
<ContentPresenter Content="Small black text">
<ContentPresenter.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource style123}"/>
</ContentPresenter.Resources>
</ContentPresenter>
<!-- This works and shows red text -->
<ContentPresenter>
<ContentPresenter.Content>
<TextBlock Text="This is big red text"/>
</ContentPresenter.Content>
<ContentPresenter.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource style123}"/>
</ContentPresenter.Resources>
</ContentPresenter>
</StackPanel>