lundi 20 septembre 2010

WPF– Application qui plante au démarrage – Erreur CLR20r3

Application en WPF, l’ensemble des tests sur le poste de développement fonctionne.

Parfait, donc je fais le setup et lance l’installation sur un XP SP3.
Ca fonctionne, tous les tests passent, donc prêt pour la production.
Et soudain, c’est le drame, l’appli plante dès le démarrage sous Seven.

Voici l’erreur :

Récipient d’erreurs , type 0
Nom d’événement : CLR20r3
Réponse : Non disponible
ID de CAB : 0
Signature du problème :
P1 : monitoringserver.exe
P2 : 1.0.0.0
P3 : 4c97529a
P4 : PresentationFramework
P5 : 3.0.0.0
P6 : 4a174fbc
P7 : 81d
P8 : 1f
P9 : System.InvalidOperationException
P10 :

Peut être un problème de références? Impossible à savoir.
Après plusieurs recherche sur le web, voici la solution qui m’a permis de repérer l’erreur :

Dans le App.xaml :

<Application 
x:Class="MonitoringServer.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"

StartupUri="MainWindow.xaml"
DispatcherUnhandledException="Application_DispatcherUnhandledException" >



Et le code-behind:



private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
Exception CurrentException = e.Exception;
while (CurrentException != null)
{
MessageBox.Show(CurrentException.Message);
CurrentException = CurrentException.InnerException;
}

}



Ainsi, dès le démarrage de l’application, des boites de dialogues s’affichent avec le détail de l’erreur.



Mon problème est corrigé et l’application fonctionne Sourire

Silverlight–Navigation–Rediriger vers une page

Ca peut paraitre idiot, mais j’ai mis un peu de temps à trouver et je n’est rien trouvé sur le web.

Mon problème, je suis dans une application de navigation Silverlight.
Je veux qu’une de mes vues soit celle par défaut, au démarrage.

Et bien, j’ai eu du mal à trouvé, pourtant, c’est tout bête :

private void ContentFrame_Navigated(object sender, NavigationEventArgs e)
{
if (String.IsNullOrEmpty(e.Uri.OriginalString))
{
this.ContentFrame.Navigate(new Uri("/MaView", UriKind.Relative));
}
}



C’est tout, il suffit juste de naviguer dans la frame Embarrassé

Silverlight–MVVM Light–Un très bon tuto

Faisant mes premiers (vrai) pas avec Silverlight 4, j’ai voulu faire les choses bien, donc MVVM.

Ce premier tuto m’a réellement aidé, il est vraiment très bien fait concernant MVVM : Article- M-V-VM avec Silverlight

L’auteur nous oriente vers MVVM Light pour travailler sur ce design pattern, et j’avoue avoir été conquis.

Il est simple d’utilisation et peu intrusif.
De plus le système de messagerie qu’il propose est vraiment bien.

Pour apprendre à l’utiliser, je conseille le tuto suivant (du même auteur) : Appliquer la pattern MVVM avec MVVM Light
Tout y est et réellement bien expliqué.

Donc un grand merci à Olivier Dahan, ses articles sont vraiment bien.

Voilà son blog :http://e-naxos.com/Blog/