Vahid
Vahid

Reputation: 5444

Trigger OnMouseOver only when IsChecked = False for ToggleButton in Wpf

I have styled a ToggleButton so that when the mouse is over it, an Underline appears. But what if I wanted that this underline only appeared only when IsChecked = False? I don't want the underline appear when IsChecked = True.

<Style x:Key="BaseToggleButton" TargetType="ToggleButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <TextBlock x:Name="Content">
                    <ContentPresenter/>
                </TextBlock>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <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 TargetName="Content" Property="TextBlock.Foreground" Value="Black"/>
                    </Trigger>
                </ControlTemplate.Triggers>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Upvotes: 0

Views: 461

Answers (1)

SamTh3D3v
SamTh3D3v

Reputation: 9944

Another trigger should do it :

 <Style x:Key="BaseToggleButton" TargetType="ToggleButton">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <TextBlock x:Name="Content">
                <ContentPresenter/>
                    </TextBlock>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="Content" Property="TextBlock.TextDecorations" Value="Underline"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="Content" Property="TextBlock.TextDecorations" Value="None"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">

                        </Trigger>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="Content" Property="Background" Value="#acacac"/>
                            <Setter TargetName="Content" Property="TextBlock.Foreground" Value="Black"/>
                        </Trigger>
                    </ControlTemplate.Triggers>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Upvotes: 1

Related Questions