2010-12-15 82 views
1

J'ai ce que je considère être un problème stupide avec une application Silverlight simple qui a un DataGrid. Une de mes colonnes permet à l'utilisateur d'éditer un numéro de présence pour le jour en cours. Si l'utilisateur supprime/clique après la modification, tout est enregistré et valide avec le contrat de liaison, mais si la zone d'édition de DataGrid a le focus et que l'utilisateur ferme le navigateur, les données ne sont pas mises à jour dans la base de données. J'utilise Silverlight 4 avec une collection observable à travers les services de wcf ria standard.Silverlight Datagrid et le problème de fermeture de navigateur

Des idées que je peux faire?

Répondre

1

Dans votre App.xaml.cs, il existe une fonction Application_Exit(). Cette fonction est lancée événement lorsque l'utilisateur ferme le navigateur.

dans cette méthode, récupérer votre fenêtre ouverte courant à travers le RootVisual comme ça:

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

Cela ne semble pas fonctionner. Il semble que l'événement application.exit n'est pas appelé lorsque le navigateur est fermé. –

+0

Essayez de mettre un MessageBox.Show (""); dans l'application_Exit() pour voir si elle est appelée. Dans mon test probject cela fonctionne (avec framework 4.0) – danbord

+0

Oui, j'obtiens l'événement de sortie Application, et j'appelle datagrid.commitedit(); il ne parvient pas à appliquer mes modifications même si je mets une boîte de message après l'appel de validation pour ralentir le traitement asynchrone. Est-ce que je manque quelque chose? –