複製和貼上是使用者在應用程式之間或應用程式內交換資料的基本方式。 這篇文章教你如何利用剪貼簿 API 實作 WinUI 應用程式中的複製貼上功能。 你會學到如何複製、剪切和貼上資料、追蹤剪貼簿的變更,以及使用 DataPackage 類別來處理不同的資料格式。
備註
你也可以透過 Windows Runtime(WinRT)API 在其他桌面應用程式中使用這些 API。 欲了解更多資訊,請參閱 Call Windows Runtime API in Desktop Apps。
檢查內建剪貼簿支援
在許多情況下,您不需要編寫程式碼來支援剪貼簿作業。 您可以用來建立應用程式的許多預設 XAML 控制項已經支援剪貼簿作業。
完成設定
首先,在你的應用程式中包含Windows.ApplicationModel.DataTransfer命名空間。 接著,加入 DataPackage 物件的實例。 此物件包含使用者要複製的資料,以及您要包含的任何屬性 (例如描述)。
複製和剪下
複製和剪下(也稱為 移動)的工作原理幾乎完全相同。 使用 RequestedOperation 屬性選擇您想要的作業。
// copy
dataPackage.RequestedOperation = DataPackageOperation.Copy;
// or cut
dataPackage.RequestedOperation = DataPackageOperation.Move;
設定複製的內容
接著,你可以將使用者選擇的資料加入 DataPackage 物件。 如果 DataPackage 類別支援此資料,您可以使用 DataPackage 物件的其中一個對應方法。 以下是使用 SetText 方法新增文字的方法:
最後一步是透過呼叫靜態
貼上
若要取得剪貼簿的內容,請呼叫靜態 GetContent 方法。 此方法回傳包含內容的 DataPackageView。 此物件幾乎與 DataPackage 物件相同,唯一不同的是其內容為唯讀。 透過該物件,您可以使用 AvailableFormats 或 Contains 方法來識別可用的格式。 接著,你可以呼叫對應的 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;
}
}