在这里需要一些关于Storyboard的帮助。在我的MainPage.xaml中,我有一个如下的故事板代码:
<Page.Resources>
<Storyboard x:Name="BackStoryBoard">
<DoubleAnimation Duration="0" To="4.55" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="image" d:IsOptimized="True"/>
<DoubleAnimationUsingKeyFrames AutoReverse="True" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="image">
<EasingDoubleKeyFrame KeyTime="0" Value="710"/>
<EasingDoubleKeyFrame KeyTime="0:0:30" Value="-710"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Page.Resources>
现在,在我的网格中,我有一个像下面的图像代码(我只有一个网格):
<Grid>
<Image x:Name="image" Source="Images/Background4.png" Stretch="Fill" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<CompositeTransform/>
</Image.RenderTransform>
</Image>
</Grid>
从后面的代码中,我在MainPage构造函数中添加了以下代码:
BackStoryBoard.Begin();
正如我们所看到的,此故事板使应用程序的背景图像能够在每30秒的时间间隔后从右向左和从左向右移动。
现在,我有一些页面,我想在所有页面中使用相同的Storyboard效果。我可以在所有页面中复制粘贴相同的代码,但这不是一个好习惯。所以,我创建了一个名为Styles.xaml的资源字典。
所以,我的问题是,如何在资源字典中编写故事板代码并在我的不同XAML页面中使用它?即使我添加了故事板,我也无法打电话给 BackStoryBoard.Begin(); ,因为它无法访问。那么,我该如何解决这个问题呢?任何帮助将受到高度赞赏。 : - )
答案 0 :(得分:2)
尝试,
将资源字典合并到所有需要的xaml页面中,例如
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="YourDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
从代码背后,
var storyboard = ((this.Resources as ResourceDictionary).MergedDictionaries[0] as ResourceDictionary)["BackStoryBoard"] as Storyboard;
Storyboard.SetTarget(storyboard, image);
storyboard.Begin();
希望这能解决您的问题。