设置按钮的选定颜色并将焦点放在WPF中

时间:2012-11-20 15:27:42

标签: wpf button triggers

我有一个透明背景和厚白色边框的按钮。当按钮检测到鼠标输入时,我看到背景从设置的透明背景变为默认的聚焦颜色,所以我只是将不透明度设置为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>

1 个答案:

答案 0 :(得分:4)

这是一个仅限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>