按钮单击激活XAML故事板(Windows 8应用程序)

时间:2013-10-06 16:32:23

标签: c# windows xaml animation

基本上,如何使用按钮激活简单的故事板动画,而不是让它自动播放?我在这里尝试普通按钮,切换按钮和切换开关,但没有一个工作。

我打算在点击按钮时向右移动一个门的图像,并在再次单击时向左移动。它应该在点击时无限期地重复这种行为。

我的MainPage.xaml文件有什么内容。

<Grid>
    <Grid.Background>
        <ImageBrush ImageSource="Assets/1.png"/>
    </Grid.Background>

    <Image Source="Assets/RightDoor.png" x:Name="rightdoor" HorizontalAlignment="Center" Height="1000" Margin="276,166,-2665,-398" VerticalAlignment="Top" Width="3755">
        <Image.RenderTransform>
            <!--<CompositeTransform x:Name="ImageTransform"/>-->
            <TransformGroup>
                <TranslateTransform x:Name="rdformTranslate" X ="1" Y="1" />
                <ScaleTransform x:Name ="rdformScale" ScaleX=".25" ScaleY=".25" />
            </TransformGroup>
        </Image.RenderTransform>
    </Image>

<ToggleButton x:Name="toggleButton" Content="ToggleButton" HorizontalAlignment="Left" Margin="493,572,0,0" VerticalAlignment="Top" Click="ToggleBtn"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="772,572,0,0" VerticalAlignment="Top" Click="BtnTest/>
<ToggleSwitch Header="ToggleSwitch" HorizontalAlignment="Left" Margin="202,548,0,0" VerticalAlignment="Top" Toggled="ToggleButton"/>
</Grid>

MainPage.xaml.cs文件

    private void ToggleButton(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
        Storyboard myStoryboard;
        myStoryboard = (Storyboard)this.Resources["rdformTranslate"];   
        myStoryboard.Begin();
    }

    private void ToggleBtn(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
        Storyboard myStoryboard;
        myStoryboard = (Storyboard)this.Resources["rdformTranslate"];
        myStoryboard.Begin();
    }

    private void BtnTest(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
        Storyboard myStoryboard;
        myStoryboard = (Storyboard)this.Resources["rdformTranslate"];
        myStoryboard.Begin();
    }

资源字典文件......

<Storyboard x:Name="rdformTranslate">
    <DoubleAnimation Storyboard.TargetName="rdformTranslate"
                                 Storyboard.TargetProperty="X"
                                 From="0" To="500" Duration="0:0:1"
                                 AutoReverse ="True" RepeatBehavior="Forever" />
</Storyboard>

应用程序能够运行,但点击任何按钮后,它立即“崩溃”。我非常感谢你解决这个问题的任何帮助。


修改评论中添加的错误

mscorlib.dll中发生了'System.Runtime.InteropServices.COMException'类型的异常,但未在用户代码WinRT信息中处理:E_NETWORK_ERROR其他信息:未指定的错误如果存在此异常的处理程序,则程序可能是安全地继续。

1 个答案:

答案 0 :(得分:0)

尝试更改Storyboard的名称并使其唯一。我认为当您设置<DoubleAnimation Storyboard.TargetName="rdformTranslate">时应用会崩溃 与Storyboard的名称相同。

此外,您无需为转换变换对象指定名称以定位其X属性。试试Storyboard.TargetProperty = "(UIElement.RenderTransform).(TranslateTransform.X)"。您可能甚至不需要为X提供默认值,因为您设置了From的{​​{1}}属性。

您可以使用DoubleAnimation安全地替换xaml中的<RenderTransform>...</RenderTransform>块。