【发布时间】:2011-06-12 03:26:50
【问题描述】:
我有一个Button 控件,我正在为其定义一个自定义模板。使用一些Storyboard's,我可以使用DoubleAnimation's 成功地操作控件属性、命名变换和效果;问题出现了,当使用PointAnimation 时,InvalidOperationException 被抛出,根据 VS:Cannot resolve TargetName OverlayEllipse.
动画是在代码中启动的,很简单:
private void Button_MouseEnter(object sender, MouseEventArgs e)
{
PopUpStoryboard.Begin();
}
以及相关的 XAML:
<Button ...>
<Button.Resources>
<RadialGradientBrush
x:Name="OverlayBrush" ...>
<RadialGradientBrush.GradientStops>
...
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
<Storyboard x:Name="PopUpStoryboard">
...
<PointAnimation
Storyboard.TargetName="OverlayEllipse"
Storyboard.TargetProperty="(Shape.Fill)(RadialGradientBrush.GradientOrigin)"
Duration="0:0:.1"
To="0.9,1.2"/>
</Storyboard>
<Button.Resources>
<Button.Style>
<Style TargetType="Button">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
...
<Ellipse x:Name="OverlayEllipse" Fill="{StaticResource OverlayBrush}"/>
...
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>
Ellipse 显然可以解析资源,因为它显示得很好,并且异常直接从Storyboard.Begin 调用中抛出。我该如何更正我所拥有的内容,以便 Storyboard 能够按名称解析资源?
我曾想过使用StaticResource 绑定,但是,考虑到它直接引用对象而不是它的名称,这是行不通的。我只是尝试使用StaticResource 绑定设置Target,而不是TargetName - 这给了我一个构建错误(够奇怪吗?)说明:The property 'Target' does not exist on the type 'PointAnimation' in the namespace @987654321@'.
谢谢。
【问题讨论】:
标签: xaml silverlight-4.0 binding resources storyboard