2

次のスタイルがありますが、マウスオーバートリガーがtrueの場合、テキストに下線が表示されません。

<Style x:Key="HyperlinkToggleButtonStyle" TargetType="ToggleButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <TextBlock x:Name="TextBlock">
                            <ContentPresenter Content="{TemplateBinding  Content}" ContentTemplate="{TemplateBinding  ContentTemplate}"/>
                </TextBlock>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="false">
            <Setter Property="Background" Value="{StaticResource StandardBackground}"/>
            <Setter Property="Foreground" Value="Black" />
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontStyle" Value="Normal"/>
            <Setter Property="FontWeight" Value="Normal"/>                                         
        </Trigger>

        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="Background" Value="{StaticResource StandardBackground}"/>
            <Setter Property="Foreground" Value="{StaticResource StandardBlue}" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontStyle" Value="Normal"/>
            <Setter Property="FontWeight" Value="Normal"/>
            <Setter Property="TextBlock.TextDecorations" Value="Underline"/>
        </Trigger>
    </Style.Triggers>
</Style>
4

2 に答える 2

3

これは理想的な解決策ではないかもしれませんが、コントロールテンプレートでトリガーを定義することはできます。TargetNameセッターのプロパティでTextBlockを参照することを忘れないでください。

    <Setter Property="Template">
        <Setter.Value>
           <ControlTemplate TargetType="ToggleButton">
              <TextBlock x:Name="TextBlock">
                        <ContentPresenter Content="{TemplateBinding  Content}" ContentTemplate="{TemplateBinding  ContentTemplate}"/>
              </TextBlock>
              <ControlTemplate.Triggers>
                 <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="TextBlock" Property="TextBlock.TextDecorations" Value="Underline"/>
                 </Trigger>
              </ControlTemplate.Triggers>
           </ControlTemplate>
        </Setter.Value>
     </Setter>
于 2012-12-06T19:54:53.473 に答える
2

TextDecorationsプロパティは継承されないため、Buttonに値(トリガーが対象としているもの)を設定しても、目的の結果は得られません。おそらくStoryBoardを使用してそれを行うことができますが、ストーリーボードがテンプレートで定義された要素をターゲットにできるかどうかは思い出せません(見つける方法はそれを行うことだけです)。

于 2012-12-06T19:55:57.013 に答える