none
Bottomのマージンだけをアニメーションさせたい RRS feed

  • 質問


  • はじめまして。
    現在、ExpressionBlendでWPFアプリのレイアウトを作成しています。

    XAMLでマージンを設定すると
    <Grid  Margin="0,0,0,0"/>という感じで右、上、左、下のマージンが配列として設定されますよね。
    このような設定でBottomのマージンだけをアニメーションさせようと思い、
    ストーリーボードで、Value="0,0,0,30" としたところ、

    Bottomのマージンはアニメーションしますが、他のマージンもアニメーションしてしまいます。

    Bottomのマージン”だけ”をアニメーションさせたい場合、どのように書けばよいでしょうか?


    2008年6月23日 13:06

回答

すべての返信

  • ExpressionBlend2.0ですが動作しています。

    こんなコードになっていました。

    Code Snippet

    <ThicknessAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="grid" Storyboard.TargetProperty="(FrameworkElement.Margin)">
     <SplineThicknessKeyFrame KeyTime="00:00:03" Value="0,0,0,30"/>
    </ThicknessAnimationUsingKeyFrames>

     

    ExpressionBlend1.0でも同じでした。

     

    なお、「0,0,0,30」で0,0,0と指定しているため元の値じゃなくて0,0,0になってしまうって意味でしたらできないようです。

    Storyboard.TargetPropertyは依存関係プロパティしかかけないようなので「FrameworkElement.Margin.Bottom」とは書けません。

    2008年6月23日 14:05
  • >なお、「0,0,0,30」で0,0,0と指定しているため元の値じゃなくて0,0,0になってしまうって意味でしたらできないようです。


    まさにコレで困っています。

    Topのマージンは他のストーリーボードで値を設定していまして、「0」ではない時があります。


    皆さん、マージンをアニメーションさせる時はどうしているのでしょうか?

    そもそもそんなことしない?

    2008年6月24日 1:10
  • このページにコンストラクタで動的にストーリーボードを生成して実行するサンプルがあります。

    ストーリーボードの概要-ストーリーボードを使用してアニメーションを適用する方法

    http://msdn.microsoft.com/ja-jp/library/ms742868(VS.80).aspx

     

    動的にストーリーボードを生成すれば現在値からBottom+30とかできます。

     

    2008年6月24日 5:24
  • サンプルを教えていただき、ありがとうございます。
    変数もストーリーボードでアニメーションさせられるんですね。

    C#でBottomの変数を作っておいて、ストーリーボードでBottomの開始点と終了点を指定でOKのようです。
    2008年6月24日 5:56