复制和粘贴
本文介绍如何支持在通用 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 对象完全相同,只不过其内容为只读。 通过该对象,你可以使用 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;
}
}