DataRequest DataRequest DataRequest Class

Definition

Lets your app supply the content the user wants to share or specify a message, if an error occurs.

public sealed class DataRequest : IDataRequestpublic sealed class DataRequest : IDataRequestPublic NotInheritable Class DataRequest Implements IDataRequest
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Remarks

Your app receives a DataRequest object when a datarequested event occurs. With this object, your app can supply data to a target app by using a DataPackage object, use a deferral object to call a function, or inform the target app that an error occurred.

Examples

The following code shows how to use the DataRequest object as part of setting the data on a DataPackage to share with another app.

//To see this code in action, add a call to ShareSouceLoad to your constructor or other
//initializing function.
private void ShareSourceLoad()
{
    DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
}

private void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequest request = e.Request;
    request.Data.Properties.Title = "Share Text Example";
    request.Data.Properties.Description = "An example of how to share text.";
    request.Data.SetText("Hello World!");
}
function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareTextHandler);
}

function shareTextHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Text Example";
    request.data.properties.description = "A demonstration that shows how to share.";
    request.data.setText("Hello World!");
}

Properties

Data Data Data

Sets or gets a DataPackage object that contains the content a user wants to share.

public DataPackage Data { get; set; }public DataPackage Data { get; set; }Public ReadWrite Property Data As DataPackage
Value
DataPackage DataPackage DataPackage

Contains the content a user wants to share.

Attributes

Remarks

The Data property enables your app to supply data to a target app. Your app must supply this data by using a DataPackage object.

Use this property when your app has the content immediately available that the user wants to share. If you need to call a function to generate the DataPackage, use the GetDeferral method.

When your app cannot supply a DataPackage object, use the FailWithDisplayText method to cancel the share and provide a message that the target app can display to the user.

Examples

The following code shows how to get a DataPackage object from the Data property as part of setting the data on a DataPackage to share with another app.

//To see this code in action, add a call to ShareSouceLoad to your constructor or other
//initializing function.
private void ShareSourceLoad()
{
    DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
}

private void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequest request = e.Request;
    request.Data.Properties.Title = "Share Text Example";
    request.Data.Properties.Description = "An example of how to share text.";
    request.Data.SetText("Hello World!");
}
function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareTextHandler);
}

function shareTextHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Text Example";
    request.data.properties.description = "A demonstration that shows how to share.";
    request.data.setText("Hello World!");
}

Deadline Deadline Deadline

Gets the deadline for finishing a delayed rendering operation. If execution goes beyond that deadline, the results of delayed rendering are ignored.

public DateTime Deadline { get; }public DateTimeOffset Deadline { get; }Public ReadOnly Property Deadline As DateTimeOffset
Value
DateTime DateTime DateTime

The deadline for the delayed rendering operation.

Attributes

Methods

FailWithDisplayText(String) FailWithDisplayText(String) FailWithDisplayText(String)

Cancels the sharing operation and supplies an error string to display to the user.

public void FailWithDisplayText(String value)public void FailWithDisplayText(String value)Public Function FailWithDisplayText(value As String) As void
Parameters
value
System.String System.String System.String

The text to display to the user.

Attributes

Remarks

Use the FailWithDisplayText method when your app is unable to supply a DataPackage to a target app. This method cancels the share operation and supplies a text message to the target app. The target app can then display this text to the user to explain why the share operation failed.

GetDeferral() GetDeferral() GetDeferral()

Supports asynchronous sharing operations by creating and returning a DataRequestDeferral object.

public DataRequestDeferral GetDeferral()public DataRequestDeferral GetDeferral()Public Function GetDeferral() As DataRequestDeferral
Returns

An object that allows you to share or send content asynchronously.

Attributes

Remarks

The GetDeferral method allows your app to call a function during a share operation, so that your app can asynchronously generate the DataPackage object for the target app.

Use this method when you want to use an asynchronous function call to generate the DataPackage during a share operation. This function must return a DataPackage object within 200ms to prevent the operation from timing out. If your app shares content that takes more time to package, such as a collection of files or photos, don't use this method. Instead, use the SetDataProvider method to assign a delegate to a DataPackage and return that DataPackage to the target app.

Examples

The following sample shows how to get a DataRequestDeferral object by using the GetDeferral method.

void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequestDeferral deferral = e.Request.GetDeferral();
    e.Request.Data.Properties.Title = "Hello World!";
    e.Request.Data.Properties.Description = "This example shows how to share files and images.";
    if (this.dataPackageThumbnail != null)
    {
        e.Request.Data.Properties.Thumbnail = this.dataPackageThumbnail;
    }
    e.Request.Data.SetBitmap(imageStreamRef);
    deferral.Complete();
}
function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareImageHandler);
}

function shareImageHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Image Example";
    request.data.properties.description = "A demonstration that shows how to share an image.";
    var deferral = request.getDeferral();
    Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("images\\smalllogo.png").then(function (thumbnailFile) {
        request.data.properties.thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(thumbnailFile);
        return Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("images\\logo.png");
    }).done(function (imageFile) {
        request.data.setBitmap(Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(imageFile));
        deferral.complete();
    }, function (err) {
        request.failWithDisplayText(err);
    });
}