【发布时间】:2015-03-04 15:09:51
【问题描述】:
当鼠标悬停在ToggleButton 上时,我如何Underline ToggleButton 的文本?我正在使用下面的代码,但是当我将鼠标悬停时没有任何反应。
<Style x:Key="BaseToggleButton" TargetType="ToggleButton">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Margin" Value="0 3 0 3"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<StackPanel Orientation="Horizontal" x:Name="Border">
<Image Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}">
</Image>
<Border x:Name="Content"
Padding="4 2 4 2"
Margin="5 0 0 0">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True" />
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Cursor" Value="Hand"/>
<Setter TargetName="Content" Property="TextBlock.TextDecorations" Value="Underline"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Content" Property="Background" Value="#acacac"></Setter>
<Setter TargetName="Content" Property="TextBlock.Foreground" Value="Black"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这很奇怪,因为这部分代码有效:
<Setter TargetName="Border" Property="Cursor" Value="Hand"/>
【问题讨论】:
-
查看这个link,它展示了一种有趣的方法来为整个 ContentPresenter 实现下划线,方法是将 ContentPresenter 封装在 TextBlock 中,然后使用 TextBlock 作为触发器的目标,从而在整个 ContentPresenter。
-
感谢您提供的链接帮助我解决了问题。
标签: c# wpf styles onmouseover togglebutton