【问题标题】:Setting a button's selected color and focus in WPF在 WPF 中设置按钮的选定颜色和焦点
【发布时间】:2012-11-20 15:27:42
【问题描述】:

我有一个按钮,它有一个透明的背景和一个厚厚的白色边框。当按钮检测到鼠标进入时,我看到背景从设置的透明背景变为默认的焦点颜色,因此我只需将不透明度设置为 0.2,以便它显示一些反馈它有焦点。

现在这是我的困境。当我离开按钮的边界时,在将背景更改为原始透明之前,会有一个小动画从我的 .2 不透明度变为 1。我想知道如何用更平滑的动画替换它,以便在它变为透明之前看不到不透明的背景,或者只是有办法完全绕过动画并让它设置我的值。当按钮聚焦时,我看到类似的事情发生。它将使用默认背景颜色在 0.2 和 1.0 之间进行动画处理。任何想法将不胜感激。

<Button BorderBrush="White" BorderThickness="1" Width="45" Height="45" >
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Opacity" Value="0.2" />
                </Trigger>
                <Trigger Property="IsMouseOver" Value="False">
                    <Setter Property="Background" Value="Transparent" />
                    <Setter Property="Opacity" Value="1.0" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

【问题讨论】:

    标签: wpf button triggers


    【解决方案1】:

    这是一个仅限 XAML 的解决方案,我认为这可以满足您的需求...

    <Button BorderBrush="White" BorderThickness="1" Width="45" Height="45" Content="1234" >
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter Property="Background" Value="Transparent" />
                            <Setter Property="Opacity" Value="1.0" />
                        </Trigger>
                        <EventTrigger RoutedEvent="MouseLeave">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.2" To="1"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                        <EventTrigger RoutedEvent="MouseEnter">
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.2" To="0.2"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    

    【讨论】:

    • 这很有效。如果选择了按钮,我只需要弄清楚如何执行此操作。否则它只是脉冲。
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多