Débutant une formation WPF la semaine dernière chez un client, je me suis retrouvé sur un problème intéressant : lors de la création de projets WPF, le code généré par Visual Studio ne compilait pas. Inutile de vous dire qu’il s’agit du genre d’incidents qui jette un rapide discrédit sur la technologie ce qui n’est évident à gérer en début de formation…
Le problème est lié à l’utilisation du langage VB et de la directive Option Strict. Si vous êtes un développeur VB sérieux et rigoureux vous avez très probablement activé l’option strict afin d’éviter d’autoriser le compilateur à ne pas signaler les opérations de cast plutôt hazardeuses. Seul problème, le code généré par les templates de projet de WPF n’est pas compatible avec cette vérification du compilateur si vous utilisez Visual Studio 2008 RTM :
En effet si vous éditez le fichier MyWpfExtensions.vb présent au sein de votre projet vous trouverez la ligne de code fautive :
Friend ReadOnly Property Application() As Application
Get
Return Global.System.Windows.Application.Current
End Get
End Property
Il est nécessaire de modifier le code du getter afin d’ajouter un cast explicite afin que le code compile correctement :
Friend ReadOnly Property Application() As Application
Get
Return CType(Global.System.Windows.Application.Current, Application)
End Get
End Property
La solution pour résoudre ce problème est simple : il vous faut installer le Service Pack 1 de Visual Studio 2008.
Autre solution si avez un besoin très urgent du correctif, vous pouvez directement télécharger les templates mis à jour sur cet article de la KB de Microsoft.