Главная » C#, Windows Runtime, XAML, Разработка для Windows 8 » Совместное использование данных (Sharing) Metro

0

Возможность  совместного использования данных  позволяет   пользователям работать  с  несколькими  приложениями  или  службами  одновременно. При использовании этого  контракта  не  нужно  писать  дополнительный  код  или руководство  для  других  разработчиков  только  для  того,  чтобы  реализовать механизм совместного использования данных.

Во время работы с этим видом контракта различают два вида приложений:

·                   приложения,  которые  является источниками  данных  и   отдают   их  в различных форматах;

·                   приложения, которые используют данные совместно.

Начнем  с  механизма, который  позволяет предоставлять данные  для  других приложений/сервисов.

В   основе  механизма   обмена   данными   лежит   объект   класса   Windows. ApplicationModel.DataTransfer.DataTransferManager.  Доступ  к  нему  можно получить, вызвав статический метод GetForCurrentView() этого же класса:

datatransferManager = DataTransferManager.GetForCurrentView(); datatransferManager.DataRequested += new TypedEventHandler

<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);

В   обработчике  события  DataRequested  можно  указать   данные,   которые необходимо предоставить другим приложениям. Пример:

void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)

{

e.Request.Data.Properties.Title = this.dataPackageTitle; e.Request.Data.Properties.Description =

this.dataPackageDescription;

if (this.dataPackageThumbnail != null)

{

e.Request.Data.Properties.Thumbnail = this.dataPackageThumbnail;

} e.Request.Data.SetText(this.dataPackageText);

}

Через свойство  Properties можно указать описание данных для  совместного использования.

Для   приложения,   которое   использует   совместные  данные,    необходимо переопределить  метод  OnShareTargetActivated  класса  Application  и  через параметры получить доступ к совместным данным:

protected override async void OnShareTargetActivated (ShareTargetActivatedEventArgs args)

{

if (args.Kind == Windows.ApplicationModel.

Activation.ActivationKind.ShareTarget)

{

GetTextAsync()

}

var text = await args.ShareOperation.Data.

}

Кроме  текста,  приложения  могут  обмениваться файлами,   изображениями, контентом html и др. Можно определять свой собственный формат и передавать его другим  приложениям.  При  этом  важно, чтобы приложение-потребитель знало формат принимаемых данных.

Сергей Лутай, Сергей Байдачный, Windows 8 для C# разработчиков

По теме:

  • Комментарии