【问题标题】:Activate XAML Storyboard on Button Click (Windows 8 Application)单击按钮时激活 XAML 故事板(Windows 8 应用程序)
【发布时间】:2013-10-06 16:32:22
【问题描述】:

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

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

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>

应用程序可以运行,但单击任何按钮时,它会立即“崩溃”。非常感谢您在解决问题方面的任何帮助。


从 cmets 编辑添加的错误

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

【问题讨论】:

  • 如果它崩溃是给你一个错误吗?如果是这样,请随时与我们分享。
  • 在 mscorlib.dll 中发生了“System.Runtime.InteropServices.COMException”类型的异常,但未在用户代码中处理 WinRT 信息:E_NETWORK_ERROR 附加信息:未指定的错误如果有此异常的处理程序,程序可以安全地继续。

标签: c# windows xaml animation


【解决方案1】:

尝试更改Storyboard 的名称并使其独一无二。我认为当您设置&lt;DoubleAnimation Storyboard.TargetName="rdformTranslate"&gt; 时应用程序会崩溃 与Storyboard 同名。

此外,您无需为翻译转换对象命名以定位其X 属性。试试Storyboard.TargetProperty = "(UIElement.RenderTransform).(TranslateTransform.X)"。您可能甚至不需要给X 一个默认值,因为您正在设置DoubleAnimationFrom 属性。

您可以安全地将 xaml 中的 &lt;RenderTransform&gt;...&lt;/RenderTransform&gt; 块替换为 &lt;RenderTransform&gt;&lt;TranslateTransform/&gt;&lt;/RenderTransform&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多