Я хотел бы использовать StoryBoard, чтобы показать изображение с анимацией плоской проекции, когда я нажимаю кнопку.
Это работает, когда я пробую это только на одном экземпляре.
Но на моей странице Silverlight (Windows Phone 7) я использую шаблон данных, чтобы повторить его из набора объектов.
А тут не работает.
Вот .xaml шаблона данных:
<DataTemplate x:Name="MyDt">
<Button Tag="{Binding iId}" BorderThickness="0" Click="buttonClick" Width="456" Style="{StaticResource ButtonStyle}">
<Image x:Name="MyImg" Source="Images/image.png" Visibility="Collapsed">
<Image.Projection>
<PlaneProjection/>
</Image.Projection>
</Image>
</Button>
</DataTemplate>
Вот .xaml раскадровки (в ресурсах телефонной страницы):
<Storyboard x:Name="storyboardShowImage">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="">
<EasingDoubleKeyFrame KeyTime="0" Value="90"/>
<EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Вот .cs события нажатия на кнопку:
private void buttonClick(object sender, RoutedEventArgs e)
{
/* Get image object from x:Name */
Image img;
img = GetChildImage((DependencyObject)sender, "MyImg");
/* Launch storyboard on img object */
((DoubleAnimationUsingKeyFrames)storyboardShowImage.Children[0]).SetValue(Storyboard.TargetNameProperty, img.Name);
storyboardShowImage.Begin();
}
Но я получаю ошибку:
Cannot resolve TargetName MyImg.
Я думаю, это потому, что существует несколько объектов изображения с x: Name «MyImg», но я не знаю, как установить цель раскадровки на правильное изображение в моем шаблоне данных.