-1

我已经在情节提要中使用了 Opacity 属性,但我无法弄清楚如何在 c# 中移动诸如网格堆栈面板按钮之类的 UI 元素 .....?(我正在用 c# 而不是 xaml 编写故事板)

4

2 回答 2

0

好吧,这取决于您的实际布局:您想为 Grid 或 Canvas 中的按钮设置动画(可以分别为 Margin 属性或 Canvas.Left 附加属性设置动画)?您想为属性本身或变换设置动画(后者将为 RenderTransform 设置动画 - 特别是 TranslateTransform)。如果您仍想引用“旧”位置,则可以使用 RenderTransform。

一种简单的方法是:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>
    <Grid.Triggers>
        <EventTrigger RoutedEvent="Grid.Loaded">
            <BeginStoryboard>
                <Storyboard RepeatBehavior="Forever">
                    <DoubleAnimation Storyboard.TargetName="myButton" 
                       Storyboard.TargetProperty="(Canvas.Left)" From="1" To="350" 
                       Duration="0:0:10" BeginTime="0:0:0"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Grid.Triggers>
    <Canvas x:Name="myCanvas" Background="Yellow">
       <Button x:Name="myButton" Width="100" Height="30" Canvas.Left="100" Canvas.Top="100" />
    </Canvas>
  </Grid>
</Window>
于 2013-07-18T08:51:46.803 回答
0

如果您将混合用于情节提要会更好..我已经生成了堆栈面板向右移动的代码..只需检查它..

您也可以浏览此视频,它非常好,非常适合您的情况

<Page.Resources>
    <Storyboard x:Name="Storyboard1">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="hello">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="100"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Page.Resources>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel Name="hello" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" >
        <StackPanel.RenderTransform>
            <CompositeTransform/>
        </StackPanel.RenderTransform>
        <TextBlock Text="hello1" FontSize="50" />
        <Button Content="Button" FontSize="50" Click="Button_Click_1" />
    </StackPanel>
</Grid>

并在单击按钮时开始执行此操作..

 private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        Storyboard1.Begin();
    }

为了更好地理解,请阅读有关如何使用混合的信息。

于 2013-07-18T08:58:20.940 回答