[英]How to call Storyboard.begin() in code behind C# defined in XAML GridView under stackpanel
I am trying to animate one Image from numbers of images displayed in gridview under stackpanel in XAML. 我试图在XAML中的stackpanel下的gridview中显示的图像数量中为一个图像设置动画。 When I am trying to call
Storyboard.beging()
in Gridview.itemclick()
, its throwing the following exception. 当我试图在
Gridview.itemclick()
调用Storyboard.beging()
时,它抛出以下异常。
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 code: 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: c#代码:
private void SoundGridView_ItemClick(object sender, ItemClickEventArgs e)
{
Storyboard sb = ((GridView)sender).Resources["ImageStoryboard"] as
Storyboard;
sb.Begin();
}
The error message was clear but since you didn't post any code, I don't know where can this exception be threw. 错误消息很明确,但由于您没有发布任何代码,我不知道在哪里可以抛出此异常。 Here is my demo:
这是我的演示:
<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>
Then in the gridView_ItemClick
event: 然后在
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();
}
Here is the rendering image of this storyboard: 这是这个故事板的渲染图像:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.