在资源中声明故事板并在任何地方调用它

时间:2014-08-07 06:42:07

标签: c# windows-phone-7 storyboard

我有一个故事板动画,我在资源中声明。现在如何在整个应用程序中调用该故事板?

 <Storyboard x:Name="Splash">
        <DoubleAnimation Duration="0:0:0.8" To="-882" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="splash" d:IsOptimized="True">
            <DoubleAnimation.EasingFunction>
                <SineEase EasingMode="EaseOut"/>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>

我已经完成了一些解决方案,但他们正在使用 FindResource 来获取故事板,但它在Windows Phone中不可用。如何调用这个故事板?

1 个答案:

答案 0 :(得分:1)

只需将Storyboard放在PhoneApplicationPage.Resources标记内,将x:Name更改为x:Key,然后在代码后面创建如下属性:

public Storyboard SplashStoryboard
{
    get
    {
        return (Storyboard)Resources["Splash"] ?? new Storyboard(); 
        //return a new Storyboard to avoid NullReferenceException;
    }
}

然后在任何地方使用它:

SplashStoryboard.Begin(); //or other methods

如果您将故事板放在App.Resources内,即使是通过MergedDictionaries示例here来自外部文件 你必须改变你的财产:

public Storyboard SplashStoryboard
{
    get
    {
        return (Storyboard)App.Current.Resources["Splash"] ?? new Storyboard(); 
        //return a new Storyboard to avoid NullReferenceException;
    }
}