我正在尝试在XAML中的stackpanel下的gridview中显示的图像数量中为一个图像设置动画。当我尝试在Storyboard.beging()
中呼叫Gridview.itemclick()
时,会抛出以下异常。
An exception of type 'System.Runtime.InteropServices.COMException'
occurred in mscorlib.ni.dll but was not handled in user code WinRT
information: Cannot find a resource with the given key.
xml代码:
<GridView Grid.Row="1" Name="SoundGridView"
SelectionMode="None" IsItemClickEnabled="True"
ItemsSource="{x:Bind sounds}"
ItemClick="SoundGridView_ItemClick">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:Sound">
<StackPanel Orientation="Vertical" Name="StkPnl1">
<StackPanel.Resources>
<Storyboard x:Key="ImageStoryboard">
<DoubleAnimation AutoReverse="True" Duration="0:0:2"
From="1" To="1.5" Storyboard.TargetProperty="ScaleX"
Storyboard.TargetName="ScaleImage" />
<DoubleAnimation AutoReverse="True" Duration="0:0:2" From="1"
To="1.5" Storyboard.TargetProperty="ScaleY"
Storyboard.TargetName="ScaleImage" />
</Storyboard>
</StackPanel.Resources>
<StackPanel.Transform3D>
<PerspectiveTransform3D />
</StackPanel.Transform3D>
<Image Name="MyImage" Source="{x:Bind ImageFile}" Height="100" Width="100" RenderTransformOrigin="0.6, 0.6" >
<Image.RenderTransform>
<ScaleTransform x:Name="ScaleImage"/>
</Image.RenderTransform>
</Image>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
c#code:
private void SoundGridView_ItemClick(object sender, ItemClickEventArgs e)
{
Storyboard sb = ((GridView)sender).Resources["ImageStoryboard"] as
Storyboard;
sb.Begin();
}
答案 0 :(得分:0)
错误消息很明确但由于您没有发布任何代码,因此我不知道该异常可以在何处投放。这是我的演示:
<GridView x:Name="gridView" IsItemClickEnabled="True" ItemClick="gridView_ItemClick">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.Resources>
<Storyboard x:Name="std" x:Key="std">
<DoubleAnimation Storyboard.TargetName="rtt" Storyboard.TargetProperty="Angle"
Duration="0:0:3" From="0" To="360" />
</Storyboard>
</Grid.Resources>
<Image Source="{Binding ImageAddress}" Width="200" Height="200">
<Image.RenderTransform>
<RotateTransform x:Name="rtt" CenterX="100" CenterY="100" />
</Image.RenderTransform>
</Image>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
然后在gridView_ItemClick
事件中:
private void gridView_ItemClick(object sender, ItemClickEventArgs e)
{
var item = gridView.ContainerFromItem(e.ClickedItem) as GridViewItem;
var grid = item.ContentTemplateRoot as Grid;
var std = grid.Resources["std"] as Storyboard;
std.Begin();
}