Language: HTML | XAML

快速入門:分享內容 (XAML)

Applies to Windows and Windows Phone

成功的應用程式可以讓使用者輕鬆地和朋友及家人分享他們的近況。能夠讓使用者輕鬆分享內容的應用程式通常都能大獲好評,同時帶動使用者更常使用這個應用程式。

若要了解如何使用這些 API,請繼續讀下去。如果您更想了解應用程式如何接收分享的內容,請參閱快速入門:接收分享的內容

目標: 讀完這個快速入門之後,您應該能夠清楚了解如何分享內容。

先決條件

  • 您應該熟悉 Visual Studio 及其範本。
  • 您應該熟悉使用 C#/C++ 進行開發。

指示

選擇資料格式

任何分享作業的核心都是 DataPackage 物件。這個物件包含使用者想分享的資料。DataPackage 可包含的內容類型包括:

  • 純文字
  • 統一資源識別元 (URI)
  • HTML
  • 格式化文字
  • 點陣圖
  • 檔案
  • 開發人員定義的資料

DataPackage 物件可以包含其中的一或多種格式,任何組合皆可。此外,DataPackage 可以包含委派,這是接收應用程式要求資料時所呼叫的函式。當使用者要分享的資料涉及敏感資源時,建議您使用委派,因為委派可更有效的協助應用程式分享資料。

選擇屬性

當您封裝資料進行分享時,可以選擇提供各種屬性,為目前分享的內容提供更多資訊。利用這些屬性可協助目標應用程式提升使用者經驗。例如,當使用者分享多個應用程式內容時,為使用者分享的內容提供標題和相關說明,可以為使用者帶來不少的方便。分享影像或網頁連結時,如果加上縮圖,就可以提供使用者視覺上的參考。如需您可以使用之屬性的詳細資訊,請參閱 DataPackage.DataPackagePropertySet 上的文件。

新增 DataTransfer 命名空間

您需要做的第一件事當然就是將正確的命名空間新增到應用程式,以便建立及處理與分享有關的物件。至少您應該新增 Windows.ApplicationModel.DataTransfer 命名空間:


using Windows.ApplicationModel.DataTransfer;


這個命名空間包含您使用基本分享時所需的一切。然而請記住,如果要分享內容,例如影像或檔案,您也必須新增那些命名空間。這裡是您可能需要的命名空間清單:

設定分享

若要支援應用程式分享,首先必須取得已指派給目前視窗的 DataTransferManager 類別執行個體。


DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();


這個類別支援 DataRequested 事件,當使用者想要叫用分享時就會引發這個事件。在 Windows 市集應用程式中,當使用者叫用 [分享] 常用鍵時,就會自動引發這個事件。如果您開發的是 Windows Phone 應用程式,則沒有內建的分享常用鍵,所以您需要新增控制項,讓使用者可以輕觸並觸發處理常式。


dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, 
DataRequestedEventArgs>(this.ShareTextHandler);

上述範例會登錄一個事件處理常式,每次發生 DataRequested 事件時,就會呼叫這個事件處理常式。這個處理常式會取得 DataRequestedEventArgs 物件,其中依次包含您的應用程式用來設定使用者要分享之資料的 DataRequest 物件。

標題屬性是必須設定的強制性屬性。


private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequest request = e.Request;
    
    // The Title is mandatory
    request.Data.Properties.Title = "Share Text Example";

    // Now add the data you want to share.
}

新增內容

應用程式接收 DataRequest 物件時,表示它已經可以新增使用者要分享的資料。您分享的任何內容都必須包含兩個屬性:標題和內容本身 (建議也提供描述)。下列程式碼是根據前面的範例所建置,它可以與目標應用程式分享文字。


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

private void ShareTextHandler(DataTransferManager sender, DataRequestedEventArgs e)
{
    DataRequest request = e.Request;
    // The Title is mandatory
    request.Data.Properties.Title = "Share Text Example";
    request.Data.Properties.Description = "A demonstration that shows how to share text.";
    request.Data.SetText("Hello World!");
}

附註  若要執行這個範例,請將它新增到您的專案,然後確定在建構函式、OnNavigatedTo 或其他初始化函式中呼叫 RegisterForShare

我們有一些資源可以協助您以許多不同的格式分享資料。如需深入了解,請參閱:

如需上述格式以及其他格式類型的詳細資訊,請參閱選擇資料格式和檔案類型

分享與委派

有時候,立即準備使用者想要分享的資料並沒有什麼意義。例如,如果您的應用程式支援數種不同的資料格式,立即建立這些格式是沒有效率的做法。比較好的做法是等到目標應用程式指定所需的格式後,再開始產生資料。若要這樣做,需設定 DataPackage 物件在目標應用程式要求特定的格式時呼叫函式。


e.Request.Data.SetDataProvider(StandardDataFormats.Bitmap, 
        new DataProviderHandler(this.OnDeferredImageRequestedHandler));


這個程式碼使用 DataRequestedEventArgs 物件,它是應用程式在 DataRequested 事件發生時接收的物件。如需詳細資訊,請參閱如何分享檔案

以程式設計方式呼叫分享 UI

設定要分享的內容後,就已經準備就緒了。使用者要做的只是選取要接收內容的應用程式。在不適合使用常用鍵的一些情況下 (例如分享電腦遊戲的高分),您也可以用程式設計方式啟動分享常用鍵。

  • Applies to Windows Phone

Windows Phone 8.1 上並沒有 Charms bar,因此您必須以程式設計方式包含分享選項。它可以是應用程式列的一部分,隨時可供存取,也可以是與特定頁面上的特定控制項關聯。


private void ShareProgrammatically()

   Windows.ApplicationModel.DataTransfer.DataTransferManager.ShowShareUI();
}

處理錯誤以及其他問題

在大部分情況下,內容的分享過程其實不複雜。但是,還是有可能發生意外的狀況。為了協助您處理這些狀況,Windows 上的 DataRequest 物件支援 FailWithDisplayText 方法。如果發生讓您的應用程式無法分享內容的情況,請使用這種方法顯示文字訊息讓使用者知道。例如,應用程式要求使用者選取要分享的內容,但使用者沒有選取任何內容。請記住,這個方法只是初步的解決之道,您還是應該測試您的應用程式,找出其他可以解決問題的方法。

  • Applies to Windows Phone

Windows Phone 8.1 不支援 FailWithDisplayText 方法。

摘要與後續步驟

您現在應該很清楚如何分享內容了。

如果要深入了解如何將分享新增到應用程式,或需要更多相關特定範例,您可以參考:

相關主題

選擇要分享的資料格式
分享內容的指導方針和檢查清單
快速入門:接收分享的內容
黑白棋範例功能案例:分享內容

 

 

顯示:
© 2014 Microsoft