在datatemplate中设置StoryBoard目标

问题描述:

我想用StoryBoard在平面投影动画中显示图像时,我点击一个按钮。在datatemplate中设置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:名称“MyImg”,但我不知道如何在我的数据模板中正确的图像上设置故事板目标。

它无法解析为该名称,因为该名称对于DataTemplate是本地的。您可以移动DataTemplate中的Storyboard,使其可以应用于每个实例中的图像,并使用VisualStateManager以Pressed状态启动动画,也可以通过代码创建Storybaord并相应地设置目标。

+0

谢谢你的回答。我是新手,并不知道如何在DataTemplate中使用StoryBoard并使用VisualStateManager启动它。你有样品吗?一条链接 ? – TheFrancisOne 2011-03-31 08:37:02

+2

看看这个问题的接受答案:http://*.com/questions/3476963/windows-phone-7-wp7-change-a-buttons-background-color-on-click你只需要您在按下状态中的更改,然后将按钮样式应用于DataTemplate中的按钮。 – 2011-03-31 08:50:56

+0

感谢您的链接。我尝试使用VisualState更改启动故事板,但是我想在点击按钮时启动它,当我使用Expression Blend时,我只能看到我的按钮visula stats:“Normal”,“MouseOver”,“Pressed”,“Disabled “ – TheFrancisOne 2011-03-31 15:49:41