【问题标题】:Trigger OnMouseOver only when IsChecked = False for ToggleButton in Wpf仅当 Wpf 中的 ToggleButton 的 IsChecked = False 时触发 OnMouseOver
【发布时间】:2015-01-06 23:25:57
【问题描述】:

我设置了ToggleButton 的样式,这样当鼠标悬停在它上面时,就会出现Underline。但是如果我希望这条下划线只出现在IsChecked = False 时呢?我不希望在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>

【问题讨论】:

    标签: wpf triggers styles onmouseover togglebutton


    【解决方案1】:

    另一个触发器应该这样做:

     <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>
    

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 2016-05-23
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多