我花了整整一天的时间来研究XAML故事板的例子,但是WinRT / Windows8应用程序不能像WPF那样工作(至less我认为),而且我都很困惑。 我所需要的是一个button,点击时向左移动100px,向上移动100px。 我正在最难的时候弄明白这一点,而且我知道,一旦我find了我想要工作的东西,我就可以从那里工作。
另外,如果任何人都可以教我如何使用“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>
这里有一个我尝试做的事情的例子,只是乱七八糟的故事板。 这直到我试图执行它没有抛出一个错误,但它仍然无法正常工作。
所以,WRT在某些方面有点不同,但很多不是。
你想要做的是把你的Button
左右移动,然后在X
轴和Y
轴上左右移动? 所以在我看来,我认为RenderTransform
/ TranslateTransform
可以利用X
和Y
;
<Button Click="StartTheMove"> <Button.RenderTransform> <TranslateTransform x:Name="MoveFoo"/> </Button.RenderTransform> </Button>
所以现在我们有了MoveFoo
并且设置了我们的Transform,并且由于WRT所知道的唯一的默认Routed.Event
是Loaded
,所以我们不能这样做,所以用StartTheMove
绑定Click处理器。
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
它就会去告诉我们的变换,我们希望X
和Y
的属性得到一些新的属性声明(这是你的Storyboard.TargetProperty
来加入乐趣),我们要设置将这两个属性的值赋值给它们之外的东西,基本上告诉它,我们希望它在我们的2d轴的X
(左边)的Y
(上)和-100px上移动100px。 你也可能想要与关键时间一起玩,无论快/慢你想要的效果发生。
虽然我没有时间来测试这个,而且在我离开办公室之前就把它扔在一起,我们都已经到了你所在的地方,希望它有帮助。 您还应该能够添加交互行为,以利用您可能更习惯的相同类型的事件触发器( 请参阅教程 ),并以这种方式处理事件,从而抛弃您的处理程序代码。
但是,希望这有助于,如果不是,我会在早上再次看到它,并将再次刺伤它。 干杯!