Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

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

[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

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 10 heures et 35 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 11 heures et 49 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18