Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment prendre en charge le contrat de partage dans un bureau ou une application de plateforme Windows universelle (UWP). Le contrat de partage est un moyen simple de partager rapidement des données, telles que du texte, des liens, des photos et des vidéos, entre les applications. Par exemple, un utilisateur peut souhaiter partager une page web avec ses amis à l’aide d’une application de réseau social ou enregistrer un lien dans une application de notes pour faire référence ultérieurement.
Note
Les exemples de code de cet article proviennent d’applications UWP. Les applications de bureau doivent utiliser IDataTransferManagerInterop. Pour plus d’informations et pour obtenir des exemples de code, consultez Afficher les objets d’interface utilisateur WinRT qui dépendent de CoreWindow.
Vous pouvez également faire référence à l’exemple d’application source de partage WPF et intégrer des options de partage dans votre application Windows pour plus d’informations sur le partage de données dans les applications de bureau.
Configurer un gestionnaire d’événements
Ajoutez un gestionnaire d’événements DataRequested à appeler chaque fois qu’un utilisateur appelle le partage. Cela peut se produire lorsque l’utilisateur appuie sur un contrôle dans votre application (par exemple, une commande bouton ou barre d’application) ou automatiquement dans un scénario spécifique (si l’utilisateur termine un niveau et obtient un score élevé, par exemple).
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += DataTransferManager_DataRequested;
Lorsqu’un événement DataRequested se produit, votre application reçoit un objet DataRequest . Il contient un DataPackage que vous pouvez utiliser pour fournir le contenu que l’utilisateur souhaite partager. Vous devez fournir un titre et des données à partager. Une description est facultative, mais recommandée.
DataRequest request = args.Request;
Choisir des données
Vous pouvez partager différents types de données, notamment :
- Texte brut
- URI (Uniform Resource Identifiers)
- HTML
- Texte mis en forme
- Bitmaps
- Fichiers
- Données personnalisées définies par les développeurs
L’objet DataPackage peut contenir un ou plusieurs de ces formats, dans n’importe quelle combinaison. L’exemple suivant illustre le partage de texte.
request.Data.SetText("Hello world!");
Définir des propriétés
Lorsque vous empaquetez des données pour le partage, vous pouvez fournir diverses propriétés qui fournissent des informations supplémentaires sur le contenu partagé. Ces propriétés aident à cibler les applications afin d’améliorer l’expérience utilisateur. Par exemple, une description permet de partager du contenu avec plusieurs applications. L’ajout d’une miniature lors du partage d’une image ou d’un lien vers une page web fournit une référence visuelle à l’utilisateur. Pour plus d’informations, consultez DataPackagePropertySet.
Avertissement
Toutes les propriétés à l’exception du titre sont facultatives. La propriété title est obligatoire et doit être définie.
request.Data.Properties.Title = "Share Example";
request.Data.Properties.Description = "A demonstration on how to share";
Lancer l’interface utilisateur de partage
Une interface utilisateur pour le partage est fournie par le système. Pour le lancer, appelez la méthode ShowShareUI .
DataTransferManager.ShowShareUI();
Gérer les erreurs
Dans la plupart des cas, le partage de contenu est un processus simple. Toutefois, il y a toujours une chance que quelque chose d’inattendu puisse se produire. Par exemple, l’application peut exiger que l’utilisateur sélectionne du contenu pour le partage, mais l’utilisateur n’en a pas sélectionné. Pour gérer ces situations, utilisez la méthode FailWithDisplayText , qui affiche un message à l’utilisateur en cas de problème.
Retarder le partage avec des délégués
Parfois, il peut ne pas être judicieux de préparer les données que l’utilisateur souhaite partager immédiatement. Par exemple, si votre application prend en charge l’envoi d’un fichier image volumineux dans plusieurs formats possibles différents, il est inefficace de créer toutes ces images avant que l’utilisateur n’effectue sa sélection.
Pour résoudre ce problème, un DataPackage peut contenir un délégué , une fonction appelée lorsque l’application de réception demande des données. Nous vous recommandons d’utiliser un délégué à tout moment où les données qu’un utilisateur souhaite partager sont gourmandes en ressources.
async void OnDeferredImageRequestedHandler(DataProviderRequest request)
{
// Provide updated bitmap data using delayed rendering
if (this.imageStream != null)
{
DataProviderDeferral deferral = request.GetDeferral();
InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();
// Decode the image.
BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(this.imageStream);
// Re-encode the image at 50% width and height.
BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);
imageEncoder.BitmapTransform.ScaledWidth = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
await imageEncoder.FlushAsync();
request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
deferral.Complete();
}
}