Xaml 如何在ItemClick中设置ListItem的动画?

Xaml 如何在ItemClick中设置ListItem的动画?,xaml,uwp,Xaml,Uwp,我的页面资源中有故事板,可以在所需控件之间共享它。我试图通过设置TargetName属性,在代码隐藏中使用该情节提要来设置单击的ListItem的动画 <Page.Resources> <Storyboard x:Name="Story1"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderT

我的页面资源中有故事板,可以在所需控件之间共享它。我试图通过设置TargetName属性,在代码隐藏中使用该情节提要来设置单击的ListItem的动画

<Page.Resources>
    <Storyboard x:Name="Story1">            
        <DoubleAnimationUsingKeyFrames 
            Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)">
            <EasingDoubleKeyFrame KeyTime="0:0:0" Value="-200"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
        </DoubleAnimationUsingKeyFrames>            
    </Storyboard>        
</Page.Resources>

<ListView x:Name="ListView1" IsItemClickEnabled="True" ItemClick="ListView1_ItemClick">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid x:Name="GridData">
                <Grid.RenderTransform>
                <TranslateTransform x:Name="GridTrans" X="0" />
                </Grid.RenderTransform>

                <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" />
                <TextBlock Text="{Binding Price}" />
                </StackPanel>                        
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

private void ListView1_ItemClick(object sender, ItemClickEventArgs e)
{ 
    Story1.Stop();
    var item = ListView1.ContainerFromItem(e.ClickedItem) as ListViewItem;
    var grid = item.ContentTemplateRoot as Grid;            
    Storyboard.SetTargetName(Story1, grid.Name);  //???
    Story1.Begin();             
}

私有无效列表视图1\u项单击(对象发送者,项单击事件参数e)
{ 
故事1.停止();
var item=ListView1.ContainerFromItem(如ClickedItem)作为ListViewItem;
var grid=item.ContentTemplateRoot作为网格;
故事板.SetTargetName(故事1,grid.Name);/???
故事1.开始();
}

但无法对ItemClick事件上单击的ListItem设置动画。我得到的错误是“无法解析TargetName GridData”

GridData位于
DataTemplate
下,如果使用
SetTargetName
方法设置动画,它将无法获得正确的
ContentTemplateRoot
。对于您的需求,您可以使用
SetTarget
方法

private void ListView1_ItemClick(object sender, ItemClickEventArgs e)
{
    Story1.Stop();
    var item = ListView1.ContainerFromItem(e.ClickedItem) as ListViewItem;
    var grid = item.ContentTemplateRoot as Grid;
    Storyboard.SetTarget(Story1, grid);  
    Story1.Begin();
}