5

イベントを発生させる要素の子要素の 1 つのプロパティをアニメーション化する XAML でストーリーボードを作成しようとしています。しかし、この特定の状況では本当にできないことである、Names を使用せずに動作させることはできないようです。

私は基本的に次のようなことを試みています(もちろん非常に単純化されています):

   <Canvas>
      <Canvas.Triggers>
         <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <EventTrigger.Actions>
               <BeginStoryboard>
                  <Storyboard>
                     <DoubleAnimation Storyboard.TargetProperty="Children[0].(Canvas.Left)" From="0" To="400" />
                  </Storyboard>
               </BeginStoryboard>
            </EventTrigger.Actions>
         </EventTrigger>
      </Canvas.Triggers>

      <Button Canvas.Left="20" Canvas.Top="20">A</Button>
      <Button Canvas.Left="40" Canvas.Top="20">B</Button>
   </Canvas>

これをどのように達成できるかについてのアイデアはありますか?

4

2 に答える 2

5

アニメーションUIElementでインデックスを作成している が存在する (つまり、 に既に存在するCanvas) 場合は、次の操作を実行できます。

<Canvas x:Name="MyCanvas">
    <Button x:Name="btn" Canvas.Left="20" Canvas.Top="20">A</Button>
    <Button Canvas.Left="40" Canvas.Top="20">B</Button>
    <Canvas.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <EventTrigger.Actions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.Target="{Binding ElementName=MyCanvas, Path=Children[0]}"
                                         Storyboard.TargetProperty="(Canvas.Left)" From="0" To="400" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger.Actions>
        </EventTrigger>
    </Canvas.Triggers>
</Canvas>

上のボタンの追加をどのように移動したかに注目してくださいTrigger。ボタンがTrigger質問の as の下にある場合、この時点で子がいないため、アクセスしようとするChildren[0]とがスローされます。ArgumentOutOfRangeException

于 2013-07-31T12:52:36.080 に答える