Windows 8 mitteilsam. DataTransferManager

Zwei Windows 8 METRO APPs arbeiten über Contracts zusammen. Einer ist Source und einer Target. Dabei ist es natürlich egal mit welcher Sprache C#, Vb.NET, C++ oder JavaScript die Anwendung programmiert wurde. Relevanter ist schon welche Art von Information man teilen möchte. Das muss zusammen passen. Möglich ist vieles wie Text, Bilder oder Links.

In diesem Blog Beitrag werden wir eine Anwendung beschreiben, die Ihre Daten teilt. Einfacher Text per Share Charm an eine andere Anwendung mittels DataTransferManager.

Dim dm As DataTransferManager
    Private Sub UserControl39_Loaded(sender As Object, 
e As RoutedEventArgs) Handles Me.Loaded dm = DataTransferManager.GetForCurrentView() End Sub

Es gibt ein spezielles Event das ausgelöst wird, wenn der Charm vom Benutzer angefordert wird. Das Event muss man behandeln um die Daten zu setzen.

   AddHandler dm.DataRequested, AddressOf reqHandler

Man kann verschiedene Eigenschaften setzen die für alle Arten gleich sind wie Title und Beschreibung. Andere Methoden sind Inhaltsspezifisch wie SetBitmap, SetRtf oder SetData für HTML.

Private Sub reqHandler(sender As DataTransferManager, args As DataRequestedEventArgs)
   args.Request.Data.Properties.Title = "dataPackageTitle"
   args.Request.Data.Properties.Description = "dataPackageDescription"
   args.Request.Data.SetText("dataPackageText")
End Sub

image

Die vollständige Doku findet sich in der MSDN online.

Man kann den Share Dialog auf per Code auslösen.  DataTransferManager.ShowShareUI().  Im folgenden VB.NET Beispiel wird angezeigt das Share nicht möglich ist, also eine Fehlermeldung.

Private Sub errorHandler(sender As DataTransferManager, args As DataRequestedEventArgs)
    args.Request.Data.Properties.Title = "dataPackageTitleError"
    args.Request.Data.Properties.Description = "dataPackageDescriptionError"
    args.Request.FailWithDisplayText("so nicht ganz boeser Fehler")
End Sub
Private Sub Button_set(sender As Object, e As RoutedEventArgs)
     AddHandler dm.DataRequested, AddressOf reqHandler
     DataTransferManager.ShowShareUI()

End Sub

image

Kommentar schreiben