0

初心者で、フレームワーク 3.5 を使用して Windows Presentation Foundation をいじっています。ストーリー ボードとアニメーションを始めたばかりです。Canvas のインスタンスを作成し、Story Board のインスタンス + アニメーションを使用してキャンバスをアニメーション化してみましたが、面白かったです。ここで、多くのアニメーションを簡単に定義し、それらを使用するための組織化された方法を考え出します (コード内でオブジェクト インスタンスを定義するのは面倒です)。

XAML を使用してそれを行うと聞いたことがありますし、CodeProject.com でいくつかの例を見たことがありますが、それらはすべて、ストーリーボードを内部に持つ UserControls を定義しているようです。それは私には難しすぎるようです。私がやりたいのは、ストーリーボード タグと、ストーリーボード タグ内のアニメーション タグをクラスとして定義することです。この方法で実行できますか? つまり、XAML で (ユーザー コントロールではなく) クラスを定義し、その特定のアニメーションを使用したいときはいつでも "StoryBoard1" や "StoryBoard2" などの変数を呼び出すことは可能ですか? 実装するにはどうすればよいですか?

4

1 に答える 1

0

再利用可能なアニメーションが必要な場合Storyboardsは、 で etc を定義できます。Window.Resources

これらはそうではResourcesないと知られていますClasses

例:

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="233" Width="405" Name="UI" >
    <Window.Resources>
        <Storyboard x:Key="MyAnimation" Storyboard.TargetProperty="Opacity">
            <DoubleAnimation From="0" To="1" Duration="0:0:5" />
        </Storyboard>
    </Window.Resources>

    <Grid>
        <Button Content="Animate" Name="button1" Opacity="0" >
            <Button.Style>
                <Style TargetType="{x:Type Button}" >
                    <Style.Triggers>
                        <Trigger Property="IsPressed" Value="True">
                            <Trigger.EnterActions>
                                <BeginStoryboard Storyboard="{StaticResource MyAnimation}" />
                            </Trigger.EnterActions>
                        </Trigger>
                    </Style.Triggers>
                </Style>
             </Button.Style>
        </Button>
    </Grid>
</Window>

コードビハインドからこれらのリソースにアクセスするには、次を使用できますFindResource

namespace WpfApplication8
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var storyboard = (Storyboard)FindResource("MyAnimation");
        }
    }
}
于 2013-01-31T04:01:20.123 に答える