我正在尝试为文本带有下划线的内容控件(例如 Button 或 HeaderedContentControl 等)创建模板。
我只想在Content="This text is underlined"
指定时为文本加下划线。
如果 Content 是另一个 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>