none
FluidMoveBehaviorを設定したWarpPanelに対して、動的に作成したButtonを追加した際のビヘイビアの挙動について RRS feed

  • 質問

  • お世話になります。

    WarpPanelにFluidMoveBehaviorを追加して、WrapPanel上に配置しているButtonをアニメーションさせたいと考えています。
    XAMLでWrapPanel上に静的に配置したButtonの場合、BlendでWrapPanelに対してFluidMoveBehaviorを設定するだけで
    正常に動作することは確認できました。
    (以下のようなXAMLの場合です)

    <WrapPanel x:Name="warpPanel" Grid.Row="1" Margin="0,0,0,-195" Orientation="Horizontal" DataContext="Binding" ButtonBase.Click="warpPanel_Click" >
    <i:Interaction.Behaviors>
    <ei:FluidMoveBehavior AppliesTo="Children">
    <ei:FluidMoveBehavior.EaseY>
    <CircleEase EasingMode="EaseOut"/>
    </ei:FluidMoveBehavior.EaseY>
    <ei:FluidMoveBehavior.EaseX>
    <CircleEase EasingMode="EaseOut"/>
    </ei:FluidMoveBehavior.EaseX>
    </ei:FluidMoveBehavior>
    </i:Interaction.Behaviors>
    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Height="47.368" VerticalAlignment="Top" Width="113.684" RenderTransformOrigin="0.5,0.5">
    <Button.RenderTransform>
    <TransformGroup>
    <ScaleTransform/>
    <SkewTransform/>
    <RotateTransform/>
    <TranslateTransform/>
    </TransformGroup>
    </Button.RenderTransform>
    </Button>
    </WrapPanel> 


    しかし、このWarpPanel上に、コードビハインドで動的に作成したButtonを追加しても
    同様のアニメーションは実行されませんでした。
    この場合、どのような処理をコードビハインド側に記述すればよいのでしょうか?

    (どうもWrapPanelに設定したFluidMoveBehaviorでは有効にならないようです、理由は分かっていません。
    それ以外の方法だと、追加したボタン毎にFluidMoveBehaviorを追加するぐらいしか思いつかなかったのですが、
    それもi:Interaction.Behaviors辺りをどのようにコードに落とせばよいのかイマイチ理解できておりません。。。)

    なにかよい手段があれば教えていただければと思います。
    よろしくお願いします。


    2013年11月11日 5:47