Comment partager du contenu HTML
Langage: HTML | XAML

Comment partager du contenu HTML (XAML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Le partage de contenu HTML est différent du partage d’autres formats de base, tels que du texte ou un lien. La principale difficulté avec ce type de contenu tient au fait que le contenu sélectionné par un utilisateur peut comporter des références à d’autres éléments. Lorsque vous créez une application qui prend en charge le partage de contenu HTML, vous devez réfléchir à la façon dont ces références doivent être gérées pour permettre aux utilisateurs de partager le contenu qu’ils souhaitent.

Le partage d’un contenu HTML combinant du texte et une image illustre bien cette problématique. Lorsqu’un utilisateur sélectionne ce type de contenu et appuie sur l’icône Partager, son intention est de partager simultanément le texte et l’image. Or, le contenu HTML ne stocke pas l’image, mais à la place, une balise img qui pointe vers l’emplacement de l’image. Vous devez configurer un mappage des ressources si la référence de l’image n’est pas accessible à une application cible, comme une image stockée localement.

Pour vous aider à garantir aux utilisateurs de pouvoir partager du contenu HTML qui réponde à leurs attentes, l’espace de noms Windows.ApplicationModel.DataTransfer inclut quelques fonctions qui facilitent la capture des éléments référencés, tels que les images. Nous allons vous montrer comment faire.

Ce que vous devez savoir

Technologies

Prérequis

  • Vous devez être familiarisé avec Visual Studio et ses modèles.
  • Vous devez être familiarisé avec le développement en C#.
  • Vous devez savoir identifier le contenu HTML sélectionné par un utilisateur et trouver les instances des éléments enfants (comme les balises img) dans cette sélection.

Instructions

Étape 1: ajouter l’espace de noms DataTransfer

Tout d’abord, vous devez ajouter les espaces de noms appropriés à votre application afin de pouvoir créer et traiter les objets associés au partage. Vous devez ajouter au minimum l’espace de noms Windows.ApplicationModel.DataTransfer :


using Windows.ApplicationModel.DataTransfer;


Cet espace de noms comporte tous les éléments nécessaires au partage de base. Gardez cependant à l’esprit que, si vous voulez partager un contenu tel que des images ou fichiers, vous devez également ajouter ces espaces de noms. Voici une liste des espaces de noms dont vous pouvez avoir besoin :

Étape 2: Obtenir l’objet DataTransferManager

L’objet DataTransferManager est le point de départ de toute opération de partage.


DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();


Étape 3: ajouter un gestionnaire d’événements pour l’événement DataRequested

Ajoutez un gestionnaire d’événements DataRequested qui se déclenche quand l’utilisateur souhaite appeler le partage. Dans une application du Windows Store, cela se produit automatiquement quand l’utilisateur appelle l’icône Partager. Si vous développez une application pour Windows Phone, aucune icône Partager n’est intégrée, donc vous devez ajouter un contrôle sur lequel l’utilisateur peut appuyer pour déclencher le gestionnaire.


dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, 
    DataRequestedEventArgs>(this.ShareHtmlHandler);

Étape 4: obtenir un objet DataRequest

Lorsqu’un événement DataRequested survient, votre application reçoit un objet DataRequest. Cet objet contient une classe DataPackage que vous pouvez utiliser pour fournir le contenu qu’un utilisateur souhaite partager.


DataRequest request = e.Request;


Étape 5: Définir les propriétés de titre et de description

La propriété title est obligatoire et doit être définie.


// The title is mandatory
request.Data.Properties.Title = "Share Html Example";
request.Data.Properties.Description = "Demonstrates how to share an HTML fragment with a local image.";

Étape 6: utiliser la méthode CreateHtmlFormat pour mettre en forme le fragment

La fonction CreateHtmlFormat inclut dans le format HTML les en-têtes et autres informations dont le système a besoin pour partager le contenu.


string htmlFormat = HtmlFormatHelper.CreateHtmlFormat(htmlExample);

Étape 7: ajouter le contenu HTML à l’objet DataPackage

Pour ajouter le contenu HTML, utilisez la fonction SetHtmlFormat.


request.Data.SetHtmlFormat(htmlFormat);


Étape 8: Créer un RandomAccessStreamReference de l’image locale

Vous devez effectuer les étapes restantes uniquement si le contenu HTML contient des images locales. Si tel est le cas, vous devez ajouter chaque image locale à la propriété ResourceMap du DataPackage pour que l’application cible y ait accès.


RandomAccessStreamReference streamRef = RandomAccessStreamReference.CreateFromUri(new Uri(localImage));

Étape 9: Ajouter RandomAccessStreamReference au mappage de ressources

Pour ajouter le fichier image, utilisez la propriété ResourceMap.


request.Data.ResourceMap[localImage] = streamRef;

Terminer l’exemple

Voici un exemple d’une fonction qui définit le contenu HTML qu’un utilisateur souhaite partager. Pour obtenir un exemple plus complet, voir l’exemple de notre bibliothèque de code.


private void RegisterForShare()
{
    DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, 
        DataRequestedEventArgs>(this.ShareHtmlHandler);
}

private void ShareHtmlHandler(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequest request = e.Request;
    request.Data.Properties.Title = "Share Html Example";
    request.Data.Properties.Description = 
        "Demonstrates how to share an HTML fragment with a local image.";

    string localImage = "ms-appx:///Assets/Logo.png";
    string htmlExample = "<p>Here is a local image: <img src=\"" + localImage + "\">.</p>";
    string htmlFormat = HtmlFormatHelper.CreateHtmlFormat(htmlExample);
    request.Data.SetHtmlFormat(htmlFormat);

    // Because the HTML contains a local image, we need to add it to the ResourceMap.
    RandomAccessStreamReference streamRef = 
         RandomAccessStreamReference.CreateFromUri(new Uri(localImage));
    request.Data.ResourceMap[localImage] = streamRef;
}

Rubriques associées

Exemple de partage de contenu source entre applications
Partage et échange de données
Comment partager des fichiers
Comment partager un lien
Comment partager du texte
Démarrage rapide : partage de contenu
DataPackage
Windows.ApplicationModel.DataTransfer
Windows.ApplicationModel.DataTransfer.Share
Scénarios de fonctionnalités de l’exemple Reversi : partage de contenu

 

 

Afficher:
© 2017 Microsoft