Pour hoster notre application WPF, nous avons besoin d’un contrôle Add-In Dynamics NAV.

Nous allons d’abord créer un projet “Class Librairy” dans Visual Studio 2010 (la version Express suffit).

Vu que le RTC Dynamics NAV 2009 SP1 est compil�� dans le framework 3.5, il faut changer le framework de votre application (bouton Project puis Properties)

image image

Il faut aussi rajouter les références suivantes :

image

Microsoft.Dynamics.Framework.UI.Extensibility et Microsoft.Dynamics.Framework.UI.Extensibility.WinForms : pour l’AddIn Dynamics NAV
System.Windows.Forms et System.Drawing : pour la création d’un Win Form
System.Windows.Forms.Integration : pour l’intégration du composant WPF dans un WinForm

Voici la liste des Using :

using Microsoft.Dynamics.Framework.UI.Extensibility;
using Microsoft.Dynamics.Framework.UI.Extensibility.WinForms;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
using System.Drawing;
using System.ComponentModel;

Nous allons maintenant ajouter un nouveau composant User Control WPF à notre projet :

image

L’objectif est de hoster le contrôle dans le RTC, notre contrôle va juste afficher un Text; voici le code XAML de ce contrôle :

<UserControl x:Class="NavWPFChart.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             d:DesignHeight="108" d:DesignWidth="300">
    <Grid >
        <TextBlock Text="Bonjour Dynamics NAV, Je suis un contrôle WPF" FontSize="20" Foreground="#FFFF1A1A" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap"></TextBlock>

    </Grid>

</UserControl>

Revenant à notre Add-In Dynamics NAV; nous allons maintenant surcharger la méthode d’affichage “CreateControl” :

    [ControlAddInExport("WPF NAV")]
    [Description("WPF NAV")]
    public class NavWPFChart : StringControlAddInBase
    {

        protected override Control CreateControl()
        {
            ElementHost eh = new ElementHost();
            UserControl1 uc = new UserControl1();

            uc.B.Content = Control.Text;
            eh.Child = uc;
            eh.Width = 350;
            eh.Height = 250;

            return eh;
        }
    }

Dans ces lignes de code, nous avions ajouter un contrôle ElementHost, nous avions instancier le UserControl1 puis nous l’avions affecté à la propriété Child de l’ElementHost

Il suffit maintenant de compiler et générer la dll du projet et puis de la copier dans le répertoire “C:\Program Files (x86)\Microsoft Dynamics NAV\60\RoleTailored Client\Add-ins”

Dans l’Object Designer de Dynamics NAV, il faut l’enregistrer et puis l’utiliser dans une Page.

Pour plus d’information sur comment créer un contrôle Add-In dans Dynamics NAV, vous pouvez consulter la documentation MSDN :
http://msdn.microsoft.com/en-us/library/dd983826(v=NAV.60).aspx