假设我有这样的控件:
<Button Style="{StaticResource MyButton}">
<Polygon Style="{StaticResource MyButtonIcon}"
Points="... some points ..." />
</Button>
MyButton 是按钮背景的样式,而 MyButtonIcon 是按钮图标多边形本身的样式。当用户将鼠标悬停在按钮上时,我想巧妙地为按钮添加动画效果。我可以设法在模板(VisualStateManager / VisualState / MouseOver / StoryBoard / ColorAnimation)中以常规方式为背景设置动画(在MyButton中定义)。为了获得一个想法,我的ColorAnimation声明看起来像这样:
<ColorAnimation Storyboard.TargetName="BackgroundTop"
Storyboard.TargetProperty="Color"
To="#FFFFFF"
Duration="0:0:0.200" />
这适用于背景。但是,我还想为内容多边形的渐变色块的颜色设置动画。我不能把动画放在MyButtonIcon中,因为当鼠标悬停在按钮的任何地方时,我希望动画多边形,而不仅仅是按钮内的多边形。我想它看起来像这样:
<ColorAnimation Storyboard.TargetName="MyContentPresenter"
Storyboard.TargetProperty="Some.Really.Long.Path.Color"
To="#FFFFFF"
Duration="0:0:0.200" />
问题是:“Some.Really.Long.Path.Color”的值应该是多少?也就是说,例如,如果我想访问内容呈现器内多边形的“填充”的第一个渐变停止的颜色属性,我该怎么做呢?或者我试图以完全错误的方式做到这一点?
我希望我很清楚,并提供足够的详细信息,如果您需要了解更多,请告诉我。
答案 0 :(得分:0)
在Storyboard.TargetProperty
:
ColorAnimation
尝试此操作
Storyboard.TargetProperty =
"(MyContentPresenter.MyButtonIcon.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)"
我不确定(MyContentPresenter.MyButtonIcon.Fill)
部分是否正确,但其余部分应该是正确的。如果这不起作用,请使用(MyContentPresenter.MyButtonIcon.Fill)
,直到它指向您的GradientBrush
,其余部分应该落实到位。
我想这是不言而喻的,但我会说以下是:(GradientBrush.GradientStops)[0]
指的是GradientStop
中的第一个GradientBrush
;只需更改索引即可引用另一个索引。
希望这有帮助!