2016-05-06 21 views
1

私はすべてをラップする絶対レイアウトを含むXamarinフォームページを持っています。その内部では、私は、全体のスペースを埋め、80のパディングを残しているコンテンツを持っている、そして私は80広く、メインのコンテンツの上に座って左側のナビゲーションサイドバーがあります。Xamarin.Forms - 2つのものを同時にアニメーション化する(アニメーションをプッシュする)

enter image description here

私が欲しいです二つのことをやって意味修正された「プッシュ」アニメーション、一種の:

  1. は移動Xに
  2. (180)100 100
によってメインコンテンツを左ナビゲーションの幅を増やします

(TranslateTo()を使用すると非常に簡単ですが、左のナビゲーションは幅を増やし、右に移動する必要はなく、WidthTo()メソッドはありません)。

私は自分で1番良いことができます。

私はそれだけで問題なく#2を行うことができます。

しかし、私は両方のアニメーションにそれらを得ることはできません。最初に(.Commit()経由で)左側のナビゲーションアニメーションを実行すると、メインコンテンツだけがアニメーション化されます。メインコンテンツのアニメーションを最初に実行すると、アニメーション化されません。奇妙な!ここで何が起こっているのですか?

var leftNavAnimation = new Animation(
    callback: x => leftNav.WidthRequest = x, 
    start: 80, 
    end: 180, 
    easing: Easing.Linear 
); 

var mainContentAnimation = new Animation(
    callback: x => mainContent.TranslationX = x, 
    start: 0, 
    end: 100, 
    easing: Easing.Linear 
); 

leftNavAnimation.Commit(this, "leftNavAnimationName", length: animationLength); 
pageContentAnimation.Commit(this, "mainContentAnimationName", length: animationLength); 

答えて

0

私は.Commit()の最初のパラメータは、あなたがアニメーションしている要素を参照する必要があることを考え出し:

はここで私が使用している基本的なコードです。

mainContentAnimation.Commit(this, "mainContentAnimationName", length: animationLength); 

へ::だからから変更

mainContentAnimation.Commit(mainContent, "mainContentAnimationName", length: animationLength); 

はそれを修正しました。

関連する問題