2013-04-21 86 views
0

我试图在Windows 8 XAML中创建一个待办事项列表。当我完成一个项目时,我想要一个故事板来擦除已完成的项目。我怎样才能让故事板运行在数据模板内的物品上?当我从C#运行故事板时,出现如下错误:WinRT信息:无法解析TargetName rectangleToDelete。在Windows 8数据项中运行故事板动画

我的故事板是这样的:

<Page.Resources> 
    <Storyboard x:Name="AnimateDelete"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="rectangleToDelete"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="-0.333"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="-327.5"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="rectangleToDelete"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0.333"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="-163.25"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</Page.Resources> 

我的列表视图模板看起来是这样的:

<ListView.ItemTemplate> 
    <DataTemplate> 

    <Grid> 
     <StackPanel Orientation="Horizontal" 
        Margin="0,0,-393,-15"> 
     <CheckBox x:Name="CheckBoxComplete" 
        IsChecked="{Binding Complete, Mode=TwoWay}" 
        Checked="CheckBoxComplete_Checked" 
        Content="{Binding Text}" 
        Margin="10,5" 
        VerticalAlignment="Center" 
        MinWidth="300" /> 
     <Button x:Name="ButtonDelete" 
       Click="ButtonDelete_Click" 
       Content="Delete" /> 
     </StackPanel> 
     <Rectangle x:Name="rectangle" 
       Fill="#FFF4F4F5" 
       Stroke="Black" 
       StrokeThickness="0" 
       RenderTransformOrigin="0.5,0.5" 
       Margin="319,2,-300,-14" 
       Height="34" 
       VerticalAlignment="Top"> 
     <Rectangle.RenderTransform> 
      <CompositeTransform ScaleX="-1" /> 
     </Rectangle.RenderTransform> 
     </Rectangle> 
    </Grid> 
    </DataTemplate> 
</ListView.ItemTemplate> 

我隐藏看起来是这样的:

 Button btn = (Button)sender; 
     TodoItem item = btn.DataContext as TodoItem; 

     StackPanel stk = (StackPanel)btn.Parent; 
     Grid grd = (Grid)stk.Parent; 
     Rectangle rect = (Rectangle)grd.Children[1]; 
     rect.Name = "rectangleToDelete"; 
     AnimateDelete.Begin(); 

,你可以看到,我我试图找到矩形并给它正确的名字,但是我得到了同样的错误。

任何帮助将不胜感激!

谢谢,汤姆

回答

2

一个DataTemplate有不同的名称范围比什么外面。您可以将该DataTemplate和Storyboard的内容放在它们自己的UserControl中以使其运行。