0

'一个新手,我正在使用框架 3.5 玩 Windows Presentation Foundation,我刚开始使用故事板和动画。我尝试创建 Canvas 实例并使用 Story Board + 动画实例为画布设置动画,这很有趣。现在我想想出一些有组织的方式,我可以很容易地定义许多动画并使用它们(在代码中定义对象实例太乏味了)。

我听说过使用 XAML 来执行此操作,并且我在 CodeProject.com 中看到了一些示例,但它们似乎都在使用其中的情节提要定义 UserControl。这对我来说似乎太难了,我想做的只是将故事板标签和故事板标签内的动画标签定义为一个类,是否可以这样做?我的意思是,是否可以在 XAML 中定义一个类(不是用户控件),然后在我想使用该特定动画时调用它的变量,如“StoryBoard1”或“StoryBoard2”?我应该如何实施它?

4

1 回答 1

0

如果您想要可重用Storyboards的动画,您可以在中定义etc。Window.Resources

这些被称为ResourcesClasses

例子:

<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 回答