快速入門:剪貼簿基礎 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

最佳的應用程式會讓使用者盡可能地完全控制自己的資料。使用者預期的其中一種控制方法就是剪貼簿作業。這些作業能讓使用者剪下、複製以及貼上資料。剪貼簿作業可以在相同應用程式或相同電腦上兩個不同應用程式之間進行。有了剪貼簿,使用者可以很輕鬆地將所需的資訊放置到想要的地方。

分享資料的多個方式

在我們討論如何將剪貼簿作業新增到應用程式前,您應該記得 Windows 8 支援數種移動資料的方式。我們在分享和交換資料中提供這些方法的概觀。其中一種方法稱為分享,這個方法與剪貼簿有許多相同之處。就開發人員的觀點而言,分享與剪貼簿作業都使用相同的 Windows 命名空間 Windows.ApplicationModel.DataTransfer。而兩者也都需要應用程式收集使用者選取的資料 (我們通常將這個動作稱為封裝,因為要使用 DataPackage 類別來完成它)。從使用者的觀點而言,剪貼簿是「典型」的移動資料方式。

身為開發人員,請記住雖然分享與剪貼簿作業十分類似,但是還是有很重要的差異。分享的焦點是在目的地:使用者選取的應用程式或服務。而剪貼簿的焦點則著重在資料上。最重要的是,剪貼簿作業是在傳統型應用程式與 Windows 市集應用程式之間交換資料的唯一方式。

如需有關分享與剪貼簿作業差異的詳細資訊,請參閱分享和交換資料

內建剪貼簿支援

在很多情況下,您不需要撰寫程式碼就可以支援剪貼簿作業。很多用來建立 Windows 市集應用程式的控制項都已經能夠支援剪貼簿作業。如需可用控制項的詳細資訊,請參閱新增控制項和內容

在您開始前

將剪貼簿作業支援新增到應用程式非常容易。首先,您應該先閱讀剪貼簿命令的指導方針和檢查清單。您會在該文章找到協助您建立最佳剪貼簿作業使用者經驗的大量資訊,以及幫助您最佳使用程式碼的方法。

接下來,您需要考慮想要支援哪些類型的資料格式。Windows 8 有兩種格式類別:標準和自訂。目前的標準格式包括:

  • 文字
  • HTML
  • URI
  • 點陣圖
  • StorageItems
  • RTF

若要查看使用這些資料格式的剪貼簿作業範例,請參閱我們的程式碼範例。 您也可以閱讀參考主題 StandardDataFormats,這可用來指定應用程式支援的格式類型。

自訂資料格式正如其名,是指不屬於任何一種標準格式的資料格式。通常這些格式代表資料的邏輯集合,例如地址或事件。若要支援自訂格式,強烈建議您使用 http://schema.org/docs/full.htm 指定的其中一種結構描述。使用常見的資料格式 (如這些結構描述) 有助於確保接收剪貼簿資料的應用程式知道如何處理資料。

開始使用

剪貼簿作業的支援通常包含兩個部分:複製 (或剪下) 以及貼上。我們先來看看如何處理複製和貼上作業。首先,先確定您的應用程式具有適當的參考。如果您使用 Microsoft Visual Studio 範本,會在建立新專案時立即新增這些參考。如果不是使用 Visual Studio,請確定應用程式能夠存取 Windows.ApplicationModel.DataTransfer 命名空間。

專案設定完成後,您需要 DataPackage 物件的執行個體。這個物件包含使用者想要複製的資料以及您想要包含的任何屬性 (例如描述)。

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();

複製和剪下

現在,您已準備好可以指定想要執行的剪貼簿作業。使用 DataPackageOperation 列舉就可以指定這些作業。以下是複製作業的程式碼:

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();
dataPackage.requestedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.copy;

以下是剪下作業 (也稱為移動作業) 的程式碼:

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();
dataPackage.requestedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.move;

現在,您可以將使用者選取的資料新增到 DataPackage 物件。如果 DataPackage 類別支援此資料,就可以使用 DataPackage 物件的其中一種對應方法。

新增文字:

dataPackage.setText("Hello World!");

如果要查看如何將其他格式新增到 DataPackage 的範例,請參閱程式碼庫中的剪貼簿範例。請記住,您可以將多個格式新增到 DataPackage

最後一件要做的事就是將 DataPackage 新增到剪貼簿。您可以呼叫靜態 Clipboard.setContent 方法來執行這個動作。

Windows.ApplicationModel.DataTransfer.Clipboard.setContent(dataPackage);

貼上

若要取得剪貼簿的內容,請呼叫靜態 Clipboard.getContent 方法。這個方法會傳回包含內容的 DataPackageView。這個物件與 DataPackage 物件幾乎完全一樣,不同的是它的內容是唯讀的。使用該物件,就可以使用 AvailableFormatscontains 方法來識別可用的格式。接著,再呼叫對應的 DataPackageView 方法來取得資料。例如,以下是取得剪貼簿中儲存文字的方法:

var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.getContent();
if (dataPackageView.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
    dataPackageView.getTextAsync().then(function (text) {
        // To output the text from this example, you need an HTML element
        // with an id of "output".
        document.getElementById("output").innerText = "Clipboard now contains: " + text;
    });
}

追蹤剪貼簿的變更

除了複製和貼上命令外,新增可讓應用程式知道剪貼簿內容變更的事件處理常式,也很有用。處理剪貼簿的 ContentChanged 事件即可執行這個動作。

Windows.ApplicationModel.DataTransfer.Clipboard.addEventListener("contentchanged", function (event) {
    var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.getContent();
    if (dataPackageView.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
        dataPackageView.getTextAsync().then(function (text) {
            // To output the text from this example, you need an HTML element
            // with an id of "output".
            document.getElementById("output").innerText = "Clipboard now contains: " + text;
        });
    }
});

有了這個處理常式,只要剪貼簿的內容變更,應用程式就會收到通知。

後續步驟

您現在應該對如何將剪貼簿支援新增到應用程式有基本的認識。如果您還沒有這樣做,建議您參閱我們的剪貼簿命令的指導方針和檢查清單,以便建立最佳的使用者經驗。另外,請從程式碼庫下載我們的範例,以查看使用剪貼簿的各種範例。

相關主題

快速入門:剪貼簿基礎

剪貼簿命令的指導方針和檢查清單

DataPackage

Windows.ApplicationModel.DataTransfer

剪貼簿範例應用程式