UWP数据分享

前言

本文介绍如何在通用Windows平台(UWP)应用程序中支持共享合同。共享合同是一种在应用程序之间快速共享数据(如文本,链接,照片和视频)的简便方法。例如,用户可能想要使用社交网络应用与他们的朋友共享网页,或者在笔记应用中保存链接以便稍后参考。

设置事件处理程序:

(1)添加DataRequested事件处理程序,以便在用户调用共享时调用。当用户点击您的应用中的控件(例如按钮或应用栏命令)或在特定场景中自动(例如,如果用户完成关卡并获得高分)时,就会发生这种情况。

DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += DataTransferManager_DataRequested;

(2)当DataRequested事件发生时,您的应用程序收到DataRequest对象。它包含一个DataPackage,您可以使用它来提供用户想要共享的内容。您必须提供要分享的标题和数据。描述是可选的,但建议使用。

DataRequest request = args.Request;

选择数据:

DataPackage对象可以包含这些格式的一个或多个,以任何组合。

  1. Plain text 纯文本
  2. Uniform Resource Identifiers (URIs) 统一资源标识符(URI)
  3. HTML
  4. Formatted text 格式化文本
  5. Bitmaps 位图
  6. Files 文件
  7. Custom developer-defined data 自定义开发人员定义的数据

设置属性:

打包数据以进行共享时,您可以提供各种属性,以提供有关正在共享的内容的其他信息。这些属性可帮助目标应用改善用户体验。例如,当用户与多个应用程序共享内容时,描述会有所帮助。在共享图像或指向网页的链接时添加缩略图可为用户提供可视参考。有关更多信息,请参阅DataPackagePropertySet。
除标题外的所有属性都是可选的。title属性是必需的,必须设置。

request.Data.Properties.Title = "Share Example";
request.Data.Properties.Description = "A demonstration on how to share";

启动共享UI

系统提供用于共享的UI。要启动它,请调用ShowShareUI方法。

DataTransferManager.ShowShareUI();

示例代码

在MainPage.xaml中添加一个按钮并设置相应事件

 <Button Name="Mybutton"
        Content="share"
        FontSize="64"
        Click="Mybutton_OnClick"></Button>

在MainPage.xaml.cs文件中添加代码

 public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        //使ShareRequested函数在共享操作时发生
        DataTransferManager.GetForCurrentView().DataRequested += ShareRequested;
    }

    private void Mybutton_OnClick(object sender, RoutedEventArgs e)
    {
        DataTransferManager.ShowShareUI();
    }
    private void ShareRequested(DataTransferManager sender, DataRequestedEventArgs args)
    {
        var deferral = args.Request.GetDeferral();
        DataRequest request = args.Request;
        request.Data.Properties.Title = "ShareUISample";
        request.Data.SetText("Description:" + "This is a line from ShareUISample. Welcome to learn UWP.");
        //flash.jpg是示例代码中Asssets文件夹中的图片,可以将其改为你自己的图片
        request.Data.SetBitmap(RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/flash.jpg")));
        deferral.Complete();
    }

点击share


>共享图片成功 ![](https://img2018.cnblogs.com/blog/1525608/201903/1525608-20190323135712836-682939010.png)
原文地址:https://www.cnblogs.com/gzyc/p/10583714.html