複製和貼上

本文介紹如何使用剪貼簿支援在通用 Windows 平台 (UWP) 應用程式中進行複製和貼上。 複製並貼上是在應用程式之間或在應用程式中交換資料的傳統方式,而且幾乎每個應用程式都可以在某種程度上支援剪貼簿作業。 如需示範數個不同複製和貼上案例的完整程式碼範例,請參閱剪貼簿範例

檢查內建剪貼簿支援

在許多情況下,您不需要撰寫程式碼來支援剪貼簿作業。 許多可用來建立已經支援剪貼簿作業的應用程式的預設 XAML 控制項。

開始設定

首先,在您的應用程式中包含 Windows.ApplicationModel.DataTransfer 命名空間。 然後,新增 DataPackage 物件的執行個體。 此物件包含使用者想要複製的資料,以及您想要包含的任何屬性 (例如說明)。

DataPackage dataPackage = new DataPackage();

複製和剪下

複製和剪下 (也稱為移動) 的作業方式幾乎完全相同。 使用 RequestedOperation 屬性來選擇您想要的作業。

// copy 
dataPackage.RequestedOperation = DataPackageOperation.Copy;
// or cut
dataPackage.RequestedOperation = DataPackageOperation.Move;

設定複製的內容

接下來,您可以將使用者選取的資料新增至 DataPackage 物件。 如果 DataPackage 類別支援此資料,則可以使用 DataPackage 物件的相應方法之一。 以下說明如何使用 SetText 方法新增文字:

dataPackage.SetText("Hello World!");

最後一步是透過呼叫靜態 SetContent 方法將 DataPackage 新增到剪貼簿。

Clipboard.SetContent(dataPackage);

貼上

若要取得剪貼簿的內容,請呼叫靜態 GetContent 方法。 這個方法會傳回包含內容的 DataPackageView。 此物件幾乎與 DataPackage 物件完全相同,不同之處在於其內容是唯讀的。 使用此物件時,您可以使用 AvailableFormatsContains 方法來識別可用的格式。 然後,您可以呼叫對應的 DataPackageView 方法來取得資料。

async void OutputClipboardText()
{
    DataPackageView dataPackageView = Clipboard.GetContent();
    if (dataPackageView.Contains(StandardDataFormats.Text))
    {
        string text = await dataPackageView.GetTextAsync();
        // To output the text from this example, you need a TextBlock control
        TextOutput.Text = "Clipboard now contains: " + text;
    }
}

追蹤剪貼簿的變更

除了複製和貼上命令之外,您也可以追蹤剪貼簿變更。 處理剪貼簿的 ContentChanged 事件來執行此動作。

Clipboard.ContentChanged += async (s, e) => 
{
    DataPackageView dataPackageView = Clipboard.GetContent();
    if (dataPackageView.Contains(StandardDataFormats.Text))
    {
        string text = await dataPackageView.GetTextAsync();
        // To output the text from this example, you need a TextBlock control
        TextOutput.Text = "Clipboard now contains: " + text;
    }
}

另請參閱