按钮上的X,Y动画故事板单击windows8应用程序

时间:2014-06-24 21:15:29

标签: c# windows xaml winrt-xaml

我花了大约一整天时间查看XAML故事板的示例,但WinRT / Windows8应用程序的工作方式与WPF相同(至少我认为),而且我都是困惑。 我想要的只是一个按钮,向左移动100px,单击时向上移动100px。我最难解决这个问题,而且我知道,一旦我得到了我想要工作的东西,我就可以在那里工作。

此外,如果有人可以教我如何使用" Storyboard.TargetProperty"这太棒了。

 <Rectangle
  Name="Rectangle01"
  Height="100"
  Width="100"
  Fill="Red">
        <Rectangle.Resources>
                    <Storyboard x:Name="myboard">
                        <DoubleAnimation 
                Storyboard.TargetName="Rectangle01"
                Storyboard.TargetProperty="Width"
                From="100" To="3600" Duration="0:0:6" />
            </Storyboard>
            </Rectangle.Resources>
    </Rectangle>

这是我试图搞乱故事板的一个例子。在我尝试执行它之前,这并没有出错,但它仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

所以,WRT在某些方面有点不同,但很多都没有。

您想要做的是将您的Button左右移动,然后在逻辑上将XY轴移到右边?所以在我看来,我认为RenderTransform / TranslateTransform可以利用XY之类的;

<Button Click="StartTheMove">
  <Button.RenderTransform>
    <TranslateTransform x:Name="MoveFoo"/>
  </Button.RenderTransform>
</Button>

现在我们有MoveFoo并设置我们的转换,因为我知道WRT的唯一默认Routed.EventLoaded我们无法做到这一点,所以与StartTheMove类似的点击处理程序;

private void StartTheMove(object sender, RoutedEventArgs e)
{
    MoveTheButton.Begin();
}

所以现在我们已经得到了我们的处理程序,我们想要关闭MoveTheButton,这将是你的实际故事板集,作为一个资源,比如你的window.resources或类似的东西;

<Storyboard x:Name="MoveTheButton">
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MoveFoo"
                                 Storyboard.TargetProperty="Y">
    <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="100" />
  </DoubleAnimationUsingKeyFrames>
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MoveFoo"
                                 Storyboard.TargetProperty="X">
    <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="-100" />
  </DoubleAnimationUsingKeyFrames>
</Storyboard>

所以,一旦我们点击Storyboard,我们就去告诉我们的转换我们想要XY的属性来声明一些新的属性(这是你的Storyboard.TargetProperty加入这个有趣的事情)我们要将这两个属性的值设置为除了它们之外的其他属性,并且基本上告诉它我们希望它移动在我们的2d轴的Y(向上)和{100}的X(左)上向上100px。对于你希望效果发生的快/慢,你也可能想要使用关键时间。

虽然我没有时间对此进行测试,并且在我离开办公室之前将其放在一起,但我们一直都在你身边,希望它有所帮助。您还应该能够添加交互行为,以利用您可能更习惯的相同类型的事件触发器(see tutorials)并处理您的事件,从而抛弃处理程序代码。< / p>

然而,希望这会有所帮助,如果不是,我会在早上再次看到它并再次刺伤它。干杯!