信息
您所需的主题如下所示。但此主题未包含在此库中。

DataPackage.SetDataProvider | setDataProvider Method

设置委托以处理来自目标应用程序的请求。

语法


dataPackage.setDataProvider(formatId, delayRenderer);

参数

formatId

类型: String [JavaScript] | System.String [.NET] | Platform::String [C++]

指定数据的格式。建议使用 StandardDataFormats 类设置此值。

delayRenderer

类型: DataProviderHandler

负责处理来自目标应用程序的请求的委托。

备注

当您的应用程序支持特定格式,但是不提供数据直到目标应用程序请求它时,请使用 SetDataProvider 方法。如果您的应用程序共享可能需要大量处理时间的目录,我们建议您使用此方法;例如,共享图片、视频或文件的选择。

在使用此方法时,需要指定布局和功能。使用 StandardDataFormats 类,可以指定格式,也可以为自定义格式使用字符串值。函数必须将数据放入 DataPackage,使用类似 SetData 的方法。

SetDataProvider 方法与 DataRequest 类的 GetDeferral 方法不同。拥有 GetDeferral,源应用程序可以调用立刻放入 DataPackage 对象的功能。SetDataProvider 方法用于更为复杂的共享操作,其中要共享的数据打包可能要消耗更多的时间和资源。

Windows Phone 8

此 API 不实现,但是调用时会引发异常。请参见 Windows Phone 运行时 API

示例


var imageFile;
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.fileTypeFilter.replaceAll([".jpg", ".bmp", ".gif", ".png", ".wmv"]);
picker.pickSingleFileAsync().then(function (file) {
    logText("PickImage: Picker returned a file");
    imageFile = file;
});

function onDeferredImageRequested(request) {
    try {
        if (imageFile) {
            // This is to make sure deferral works even in synchronous case
            var deferral = request.getDeferral();
            var imageStreamRef = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(imageFile);
            request.setData(imageStreamRef);
            deferral.complete();
        }
    } catch (exc) {
        // Error handling goes here.
    }
}


function shareFiles() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", function (e) {
        var request = e.request;
        request.data.properties.title = "Share Files Example";
        request.data.properties.description = "A demonstration that shows how to share files.";
        request.data.properties.fileTypes.replaceAll([".jpg", ".bmp", ".gif", ".png", ".wmv"]);
        request.data.setDataProvider(Windows.ApplicationModel.DataTransfer.StandardDataFormats.bitmap, onDeferredImageRequested);
    });
}



要求

最低支持客户端

Windows 8

最低支持服务器

Windows Server 2012

最低支持电话

Windows Phone 8 [未实现,请参见备注]

命名空间

Windows.ApplicationModel.DataTransfer
Windows::ApplicationModel::DataTransfer [C++]

元数据

Windows.winmd

另请参见

DataPackage

 

 

显示: