WPFにてアニメーションで外部リソースを使用する

アニメーションを行う場合、Storyboardを使用すると思うのですが、外部リソースを使いたいときにはまってしまったので備忘録として書いておきます。

アニメーションについてはこちらの記事でも紹介しています。

https://lifetime-engineer.com/wpf-prism-screendisplay/

変更前(エラーがでます)

<Resources>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/リソースDLL名;component/Themes/Generic.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <Storyboard x:Key="Storyboard">
        <ObjectAnimationUsingKeyFrames
                    Storyboard.TargetName="main"
                    Storyboard.TargetProperty="(Image.Source)"
                    AutoReverse="False"
                    Duration="0:0:2.5"
                    RepeatBehavior="Forever">
            <DiscreteObjectKeyFrame Value="{StaticResource sample1}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample2}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample3}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample4}" />
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</Resources>

変更後

<Resources>
    <ResourceDictionary> <!--こちらを追加!!-->
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/リソースDLL名;component/Themes/Generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Storyboard x:Key="Storyboard">
            <ObjectAnimationUsingKeyFrames
                        Storyboard.TargetName="main"
                        Storyboard.TargetProperty="(Image.Source)"
                        AutoReverse="False"
                        Duration="0:0:2.5"
                        RepeatBehavior="Forever">
            <DiscreteObjectKeyFrame Value="{StaticResource sample1}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample2}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample3}" />
            <DiscreteObjectKeyFrame Value="{StaticResource sample4}" />
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </ResourceDictionary>
</Resources>

変更前の記述だと、StoryboardとResourceDictionaryが一緒に書けませんでした。
変更後はResourceDictionary内にStoryboardとResourceDictionaryがいます。エラーも出ません。
ResourceDictionaryの要素にResourceDictionary.MergedDictionariesがいるので分かればなんてことはないのですが、わかるまでが長かった。。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA