2011-12-24 4 views
0

WP 7.5アプリ。私は2つのストーリーボードアニメーションを持っています - イメージとテキストの2つです。あいまいで不明瞭なものを使う...私はこれを正しくやっていますか?

問題1:次のページに移動して戻ると、画像とテキストが点滅します。

解決法1:だから私はOnNavigateFromを追加し、明示的なアニメーションを停止しても0

にアニメーションに関わるすべてのプロパティをリセットIssue2:は今画面は、いつ私はそれをアンロックモードをロックするために行くと言いますOnNavigatedFromで要素の1つの不透明度を0に設定しているため、ユーザーは次のページに移動するまで非表示になっています。

対処方法2:私は、コード内で以下のように隠れていると隠蔽されていないハンドラを取り扱い、アプリが不明瞭なモードに起こっている場合は、アニメーションを停止したり、プロパティをリセットしません参照するためのフラグを追加しました。

public class Page2 :PhoneApplicationPage 
    { 
     private bool _isObscured = false; 
     public Page2() 
     { 
      (Application.Current as App).RootFrame.Obscured += OnObscured; 
      (Application.Current as App).RootFrame.Unobscured += OnUnobscured; 
      InitializeComponent(); 
     } 

     protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
     { 
      //Stop animations and reset properties only if not going to obscure mode. 
      if (!_isObscured) 
      { 
       //stop animaiton 
       Storyboard1.Stop(); 
       Storyboard2.Stop(); 
       //Reset all transform properties to 0 
       Text1.Opacity = 0; 
       Image1.RenderTransform.SetValue(CompositeTransform.ScaleXProperty, 0.0); 
       Image1.RenderTransform.SetValue(CompositeTransform.ScaleYProperty, 0.0); 
      } 
      base.OnNavigatedFrom(e); 
     } 

     void OnObscured(object sender, ObscuredEventArgs e) 
     { 
      Storyboard1.Pause(); 
      Storyboard2.Pause(); 
      _isObscured = true; 
     } 

     void OnUnobscured(object sender, EventArgs e) 
     { 
      Storyboard1.Resume(); 
      Storyboard2.Resume(); 
      _isObscured = true; 
     } 
    } 

質問:これはどこへ行くcorret方法ですか良い方法はありますか?このようにするための認証問題がありますか?

本当にありがとうございました。

答えて

0

最も簡単な方法は、IsLeaveブール値プロパティを追加し、NavigateToメソッドを呼び出すクリックイベントでtrueに設定することです。また、同じ機能でアニメーションを停止することもできます。

あなたが戻ってくるときに、IsLeaveのプロパティは、アニメーションを実行するかどうかを確認することができます。

private bool IsLeave = false;

OnNavigatedTo() 
{ 
     if (IsLeave) 
     { 
      //We come back. Reset animations 
      IsLeave = false; 
     } 
} 

ClickEvent() 
{ 
     IsLeave = true; 
     //Permorm all you need with animations. We leave this page 
     NavigationService.NavigateTo() 
} 
+0

正確にわからないのですか?スクリーンロック、すなわち不明瞭な場合、どのように役立ちますか? – oms

+0

この場合、画面がロックされると、OnNavigatedFromメソッドの不透明度の変更はもうありません。だから、あなたが戻ってくるとき、すべての要素がまだ見える。そして、あなたのSolution1はIssue2を生み出しません、私は – Ku6opr

+0

と思います。私はそれをテストしなければならないでしょう。また、私のNavigationService.NavigateTo()は、私の画像のMouseLeftButtonDown経由のナビゲーションを処理するcustomControlの内部にあります。私は試して更新します。ありがとう。 – oms