Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF/VSTO] Comment afficher des contrôles WPF dans une Outlook Form Region ?

En voila une question intéressante Smile Avant d'aller plus loin, je vais tenter d'expliquer un peu ce que sont les "Outlook Form Regions".

Introduction aux Outlook Form Regions:

Outlook 2007 propose une nouvelle fonctionnalité, les "Outlook Form Regions" pour tout ce qui est personnalisation de l'interface utilisateur d'Outlook. Vous avez en effet la possibilité de modifier, simplement, différentes fenêtres présentes dans l'interface d'Outlook (fenêtre de visualisation d'un mail, d'écriture d'un mail, de visualisation d'un contact, etc...) pour les personnaliser et y rajouter différents contrôles, comme vous le montre cette image:

Si vous voulez avoir plus d'informations sur cette nouvelle fonctionnalité, rendez-vous à cette adresse: Outlook Form Regions Overview

Le développement d'une "Outlook Form region" n'est pas compliqué: on peut même le comparer au développement d'un simple UserControl. En effet, votre Form Region se compose de différents contrôles qui seront ensuite afficher à l'endroit que vous avez indiqué.

En partant de ce constat, je me suis demandé s'il serait possible d'utiliser un peu de WPF au sein des Outlook Form Regions. Et bien la réponse est: Oui (et cela marche vraiment bien).

Là encore, la technique est simple et si vous avez déjà fait un peu d'interop WPF/WindowsForms, vous ne devriez pas être trop perdu Wink

Comment cela fonctionne-t-il ?

Dans votre solution Visual Studio, commencez par créer un nouveau projet qui hébergera votre (ou vos) UserControl(s) WPF. Une fois que votre contrôle est fin prêt, dans le projet de votre addin Outlook, rajoutez une référence vers votre projet contenant votre UserControl.

Ensuite ? Il ne vous reste plus grand chose à faire. En effet, lorsque l'on sait que les Form Regions sont en fait composées de simple contrôles WindowsForms classiques, il ne reste plus qu'à faire un peu d'interop pour intégrer notre contrôle WPF. Comment ? En utilisant tout simplement un contrôle Windows nommé ElementHost Smile

Un ElementHost est un contrôle qui est utilisé lorsque l'on veut, au sein d'une application Windows, pouvoir utiliser un contrôle WPF. L'inconvénient de ce contrôle est qu'il ne permet pas d'afficher plusieurs contrôles WPF en même temps (boutons, Listview, etc...). La solution de contournement ? Créer un UserControl WPF qui hébergera/sera composé de l'ensemble des contrôles WPF dont vous avez besoin. Ensuite, dans votre Form Region, vous utilisez un ElementHost et vous indiquez que le contrôle WPF à utiliser comme enfant sera.... votre UserControl WPF Wink

Comme ce doit-être un peu flou, voici un petit schéma pour tenter de vous clarifier la situation:

Contrôles WPF => UserControl WPF => ElementHost sur Outlook Form Region

Au final, on se retrouve avec ce que l'on souhaitait: une Outlook Form Region qui intégre/utilise un contrôle WPF:

Pourquoi utiliser du WPF dans Outlook ?

La question, bien que sortant du sujet initial de ce post, mérite de se poser. En effet, on vient de voir qu'il est très simple d'intégrer du WPF (Windows Presentation Foundation) dans Outlook (et plus particulièrement dans une Form Region) mais on pourrait se demander quel est l'intérêt de faire une telle chose ?

Pour être franc, je dois admettre qu'il n'y a pas qu'une seule réponse à cette question. En effet, vous pourriez tout à fait vouloir faire ce genre de chose pour le fun, pour tester ce qu'il est possible de faire ou bien même parce que ce que vosu désirez faire n'est possible (ou est plus simple à faire) en WPF.

Bref, l'important n'est pas pourquoi mais simplement: Oui, il est possible de le faire, comme vous l'avez vu, et cela de façon très très simple !

 

Pour ceux que cela intéresse, vous trouverez une source d'exemple (Visual Studio 2008 Beta 2) à cette adresse: WPFInOutlookFormRegions.zip

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 25 octobre 2007 10:18 par Thomas LEBRUN
Classé sous : , , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [WPF] Nouvel article sur c2i.fr par Richard Clark le il y a 6 heures et 12 minutes

- F# nouvelle CTP 1.9.6.2 (update) par Pierrick's Blog le il y a 10 heures et 18 minutes

- La suite ...Proposition de collaboration rédactionnelle entre les communautés de développeurs et Microsoft France par LucasR le 09-05-2008, 17:45

- [Fun] Votre simulateur de vol avec Microsoft ESP par Julien Chable le 09-05-2008, 12:02

- [Best Practices] Customisation du My Site : Comment le modifier en amont et en aval par The Mit's Blog le 09-05-2008, 10:47

- Patrick Tisseghem s'en est allé ... par The Mit's Blog le 09-05-2008, 10:04

- MS AutoCollage par alex# le 09-05-2008, 09:18

- Un grand SharePointeur nous a quitte : Patrick Tisseghem manquera à la communauté ! par RedoBlog - The .NET Gentleman !!! le 09-05-2008, 08:52

- [WPF] Comment charger dynamiquement un fichier XAML qui définit des eventhandler ? par Thomas Lebrun le 09-04-2008, 10:56

- Article sur le filtrage des modèles de site SharePoint par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 09-04-2008, 00:11