2013-04-21 88 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中以使其運行。