我有以下问题。我希望在鼠标悬停时为图标的颜色值设置动画(并在鼠标离开后将其设置为动画)。为了实现这一点,我创建了一个在MouseEnter上触发的新ColorAnimation。动画的属性路径是"(Path.Fill)。(SolidColorBrush.Color)"。但是当运行时会出现错误; '填充' property不指向path'(Path.Fill)中的DependencyObject。(SolidColorBrush.Color)' 。虽然我认为我理解错误意味着什么,但我不知道我应该使用什么属性路径。有任何想法吗?提前谢谢您的时间。如果有任何不清楚的地方,请告诉我。
聚苯乙烯。如果有人更好地了解如何放置图标/路径'资源我非常感激。
代码;
ColorAnimation mouseEnterColorAnimation = new ColorAnimation {
To = Colors.Yellow,
Duration = TimeSpan.FromSeconds(1)
};
Storyboard.SetTargetName(mouseEnterColorAnimation, "DeleteIconGrid");
Storyboard.SetTargetProperty(mouseEnterColorAnimation, new PropertyPath("Path.Fill).(SolidColorBrush.Color)"));
Storyboard mouseEnterStoryboard = new Storyboard();
mouseEnterStoryboard.Children.Add(mouseEnterColorAnimation);
mouseEnterStoryboard.Begin(this);
的Xaml;
<Grid x:Name="Grid" Background="Transparent" Width="100" Height="100" MouseDown="Grid_MouseDown" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave" >
<Grid x:Name="DeleteIconGrid" Width="50" Margin="0,0,0,14"><Grid.Background><VisualBrush Visual="{StaticResource Icon-Delete}" Stretch="Uniform" /></Grid.Background></Grid>
<Label Content="Delete icon" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="6" Foreground="{DynamicResource Gray}"></Label>
</Grid>
资源;
<Canvas x:Key="Icon-Delete" Background="Transparent">
<Path Stretch="Uniform" Fill="LightSlateGray" Data="F1 M 4.70432,0L 0.0480347,4.77802L 7.00842,11.6812L 0,18.7292L 4.70432,23.46L 11.6647,16.412L 18.6252,23.46L 23.3774,18.7774L 16.369,11.6812L 23.3294,4.77802L 18.6252,0L 11.6647,6.9986L 4.70432,0 Z" />
</Canvas>
答案 0 :(得分:1)
VisualBrush
不具有Color
属性...您似乎将其与SolidColorBrush
混淆了。因此,您无法为VisualBrush
的颜色设置动画,但在使用SolidColorBrush
时可以。
你的PropertyPath
也错了......而不是:
"Path.Fill).(SolidColorBrush.Color)"
它应该是这样的:
"(Path.Fill).(SolidColorBrush.Color)"
最后,如果您要为Color
的{{1}}属性设置动画,那么您需要将Brush
属性设置为Fill
的实例,就像您所做的那样在SolidColorBrush
中的Path
:
Canvas
更新&gt;&gt;&gt;
要为<Path Stretch="Uniform" Fill="LightSlateGray" Data="F1 M 4.70432,0L 0.0480347,4.77802L 7.00842,11.6812L 0,18.7292L 4.70432,23.46L 11.6647,16.412L 18.6252,23.46L 23.3774,18.7774L 16.369,11.6812L 23.3294,4.77802L 18.6252,0L 11.6647,6.9986L 4.70432,0 Z" />
设置动画,您需要将其声明为内联。从Visual Studio论坛的VisualBrush Animation页面获取此示例:
VisualBrush.Visual