2010-12-15 5 views
1

私は、データグリッドを持つシンプルなSilverlightアプリケーションでは愚かな問題だと考えています。私の列の1つで、ユーザーは当日の出席番号を編集できます。ユーザーが編集後にタブ/クリックすると、すべてが保存され、拘束力のある契約が適用されますが、データグリッドの編集ボックスにフォーカスがあってユーザーがブラウザを閉じると、データはデータベースで更新されません。私は、標準的なwcf riaサービスを通して観測可能なコレクションを持つSilverlight 4を使用しています。Silverlight Datagrid and browser close problem

私は何ができますか?

答えて

1

App.xaml.csには、Application_Exit()関数があります。この関数は、ユーザーがブラウザを閉じたときに起動されます。

はその方法では、そのようなRootVisualを通して、あなたの現在の開いたウィンドウを取得する:

private void Application_Exit(object sender, EventArgs e) 
{ 
    if (this.RootVisual is MySLApp.MainPage) 
    { 
     MySLApp.MainPage theMainPage = (MySLApp.MainPage)this.RootVisual; 

     theMainPage.myGrid.Commit() // OR SOMETHING LIKE THAT I DONT THINK THE COMMIT EXISTS :) 
    } 

} 
+0

これは動作するようには思えません。ブラウザが閉じられたときにapplication.exitイベントが呼び出されていないようです。 –

+0

MessageBox.Show( "");を入れてみます。それが呼び出されたかどうかを確認するApplication_Exit()。私のテストの問題では、フレームワーク4.0で動作します – danbord

+0

はい、私はアプリケーション終了イベントを取得しています。私はdatagrid.commitedit()を呼び出しています。コミット呼び出しの後にメッセージボックスを置いても、非同期処理を遅らせるために私の編集を適用することに失敗しています。何か不足していますか? –