WPF故事板对象访问

时间:2010-04-04 12:17:06

标签: c# .net wpf

我是silverlight和wpf编程的新手

我刚刚在silverlight中创建了一个简单的故事板,增加了按钮的高度和宽度。

正如我所知,我编写了这段代码,以便每当我在按钮故事板上移动光标时就开始了。

这是用于silverlight的代码。

private void button_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
    if(Storyboard1.GetCurrentState()!=ClockState.Active)
        Storyboard1.Begin();
}

就我使用silverlight而言,在上述场景中一切都很好。

但现在我想在WPF中使用相同的功能。

但我遇到的问题是在WPF按钮单击事件处理程序中我无法访问Storyboard1对象。

请帮我在事件处理程序中访问storyboard对象。

1 个答案:

答案 0 :(得分:2)

在WPF中,您不需要代码来执行此类动画;它可以在XAML中完成。例如:

    <Button>
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="Width" Value="50" />
                <Setter Property="Height" Value="20" />
                <Style.Triggers>
                    <EventTrigger RoutedEvent="MouseEnter">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Width" To="100" />
                                <DoubleAnimation Storyboard.TargetProperty="Height" To="40" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                    <EventTrigger RoutedEvent="MouseLeave">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Width" To="50" />
                                <DoubleAnimation Storyboard.TargetProperty="Height" To="20" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

实际上,由于它都是风格,因此您可以轻松地将此动画应用于多个按钮,而无需重复代码:

<Window.Resources>
    <Style x:Key="myGrowingButton" TargetType="Button">
        ...
    </Style>
</Window.Resources>
...
    <Button Style="{StaticResource myGrowingButton}">Button1</Button>
    <Button Style="{StaticResource myGrowingButton}">Button2</Button>
...