Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动画按钮。鼠标上方的LinearGradientBrush背景_C#_Wpf_Xaml_Storyboard - Fatal编程技术网

C# 动画按钮。鼠标上方的LinearGradientBrush背景

C# 动画按钮。鼠标上方的LinearGradientBrush背景,c#,wpf,xaml,storyboard,C#,Wpf,Xaml,Storyboard,我正在设计一个自定义按钮,希望在鼠标悬停时将其背景更改为LinearGradientBrush。这就是我所尝试的: <UserControl Height="Auto" Width="Auto"> <UserControl.Resources> <LinearGradientBrush x:Key="toBackgroundBrush" EndPoint="0,1" StartPoint="0,0"> <GradientStop

我正在设计一个自定义按钮,希望在鼠标悬停时将其背景更改为
LinearGradientBrush
。这就是我所尝试的:

<UserControl Height="Auto" Width="Auto">
<UserControl.Resources>
    <LinearGradientBrush x:Key="toBackgroundBrush" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#FFC8C8C8" Offset="1"/>
        <GradientStop Color="#FF626161" Offset="0.599"/>
        <GradientStop Color="#FF787878" Offset="0.497"/>
        <GradientStop Color="#FF939393" Offset="1"/>
    </LinearGradientBrush>
</UserControl.Resources>

<Grid>
    <Button Content="Button" Foreground="#FFFFFEFE" Height="30" Width="120">
        <Button.Background>
            <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                <GradientStop Color="#FFC8C8C8" Offset="0"/>
                <GradientStop Color="#FF626161" Offset="0.539"/>
                <GradientStop Color="#FF787878" Offset="0.467"/>
                <GradientStop Color="#FF939393" Offset="1"/>
            </LinearGradientBrush>
        </Button.Background>
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation 
                                                    Storyboard.TargetProperty="Background"
                                                    AutoReverse="True"
                                                    Duration="0:0:0.25"
                                                    To="{StaticResource toBackgroundBrush}">
                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
</Grid>

我最初尝试在Blend中设置
MouseOver
事件的动画,但这并没有覆盖默认模板,因此我最终使用故事板“手动”完成了此操作。我不明白为什么
LinearGradientBrush
对于属性
To
来说不是有效的值,而
To
实际上指向按钮上的
Background
属性。非常感谢您的帮助。

的MSDN页面中的示例控制模板显示了如何通过为
鼠标盖
视觉状态创建情节提要来解决问题。

的MSDN页面中的示例控制模板显示了如何通过为
鼠标盖
视觉状态创建情节提要来解决问题。

查看是否这个问题对@MarkHall有帮助我试过了。。。不会更改任何内容,颜色会一直更改为默认的Windows按钮样式。
笔刷
不是
颜色
。因此,您不能使用
彩色动画
设置类型为
笔刷
背景
的动画,您不能将
画笔
指定给
类型为
Color
to
属性。您可能想看看
鼠标盖
VisualState是如何实现的。@Clemens使用
VisualStateManager
完成了这个技巧,谢谢!如果你愿意,将你的评论作为答案发布,我会接受。看看这个问题是否有帮助@MarkHall我试过了。。。不会更改任何内容,颜色会一直更改为默认的Windows按钮样式。
笔刷
不是
颜色
。因此,您不能使用
彩色动画
设置类型为
笔刷
背景
的动画,您不能将
画笔
指定给
类型为
Color
to
属性。您可能想看看
鼠标盖
VisualState是如何实现的。@Clemens使用
VisualStateManager
完成了这个技巧,谢谢!如果你愿意的话,把你的评论贴出来作为回答,我会接受的。
Cannot convert the value in attribute 'To' to object of type 
'System.Nullable`1[[System.Windows.Media.Color, PresentationCore, Version=3.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35]]'. 
'System.Windows.Media.LinearGradientBrush' is not a valid value for property 'To'.