1

あるクラスのStartDate(DateTime)プロパティにバインドされたMarginプロパティを持つBorder要素があります。プロパティが変更された場合、マージンも変更されます(コンバーターの助けを借りて)。

できるだけスムーズに変更したいです。たとえば、UI側では、データクラスの1時間は画面上の15ピクセルに相当し、StartDate +/- 1時間を変更すると、要素のマージンが左右に+/-15ピクセルジャンプすることがわかります。これをアニメートしますか?

前もって感謝します!

ところで-これはここでの私の最初の質問です:)

4

1 に答える 1

1

残念ながら、アニメーションを通じてマージンをネイティブに操作することはできません。マージンは実際には Thickness オブジェクトであり、単純なプロパティ アニメーターが独自に把握することはほとんど不可能です。

ただし、今日のすべてのように、これをオーバーライドする方法はたくさんあります。

  1. マージンの代わりにオブジェクトの位置を移動します: Silverlight でマージンの変更をアニメーション化する

  2. WPF の ThicknessAnimation クラスに似た新しいクラスを作成し、コードで呼び出します: http://blogs.msdn.com/blemmon/archive/2009/03/18/animating-margins-in-silverlight.aspx

  3. ...または私の好みの方法: アニメーション化する何か他のものを見つけます。他のオブジェクトを移動する別のオブジェクトを操作できます。見えない/透明なオブジェクトの幅と高さを非常に簡単にアニメーション化できます。そのアイテムがスタック パネルの最初のものである場合、サイズの値が変更されると、それ以降のすべてのアイテムが移動されます。これは面倒かもしれませんが、とても簡単です。

幸運を!

于 2010-04-15T20:56:52.497 に答える