2011-12-19 6 views
1

Silverlight 4にログインページがあります。MVVMを使用してページとのすべてのやりとりを処理しています。ログインに成功すると、私のビューモデルで起動され、メインページに移動するコードが続くカスタムイベントが発生します。イベントアグリゲーションを使用し、ビュー間の移動に& subscribeを公開します。でも、MVVMを使用してSilverlight 4でビューを変更する前にストーリーボードアニメーションが終了するのを待つ

//constructor of view 
    public Login(LoginVM vm) 
    { 
     InitializeComponent(); 

     DataContext = vm; 
     thisVM = vm; 

     vm.AnimateLoginSuccess += new EventHandler(vm_AnimateLoginSuccess); 

    } 


//event handling method in view 
    void vm_AnimateLoginSuccess(object sender, EventArgs e) 
    { 
     LoginSuccessStoryboard.Begin(); 
    } 

は、問題がある:

AnimateLoginSuccess(this, null); 
//code to navigate to the main page after successful login. 

私はLoginSuccessStoryboardは、私はいくつかの基本的なアニメーションのために作成したストーリーボードである場合には、このようにそれをアップ配線、私の見解では、このイベントを処理しますアニメーションは成功したログインの後に始まりますが、成功したログインで別のビューに移動する次の行は、アニメーションが終了するのを待たずに次のビューに移動します。これにより、アニメーションが事実上存在しなくなります。どのようにこの作品を作るためのアイデアですか?

答えて

5

ストーリーボードのCompletedイベントを使用して、アニメーションが終了した後でビューにナビゲートすることができます。 ViewModelにメソッドを追加します。このメソッドは、アニメーションの後に実行され、デフォルトの最初のビューに移動します。

public Login(LoginVM vm) { 
    InitializeComponent(); 

    LoginSuccessStoryboard.Completed += new EventHandler(NavigateToViewAfterAnimation); 
    DataContext = vm; 
    thisVM = vm; 

    vm.AnimateLoginSuccess += new EventHandler(vm_AnimateLoginSuccess); 

} 

private void NavigateToViewAfterAnimation(object sender, EventArgs e) { 
    thisVW.NavigateToFirstView(); // Navigates to the first view. 
} 
関連する問題