У меня есть Button
элемент управления, для которого я определяю пользовательский шаблон.Используя некоторые Storyboard
, я могу успешно манипулировать управляющими свойствами, именованными преобразованиями и эффектами с помощью DoubleAnimation
;Возникла проблема, при использовании 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
, но это не сработает, учитывая, что это относитсянепосредственно к объекту, а не к его имени.Я просто попытался установить Target
, в отличие от TargetName
, используя привязку StaticResource
- это дает мне ошибку сборки (как ни странно?), Заявляющую: The property 'Target' does not exist on the type 'PointAnimation' in the namespace <a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml/presentation</a>'.
Спасибо.