跳到主要内容

Clipboard

Clipboard 类允许与系统剪贴板交互,提供设置和获取文本、清空剪贴板、处理数据对象以及使用不同数据格式的功能。

信息

有关这些概念实际运用的完整可运行示例,请查看示例应用。

可以通过 TopLevel 或 Window 实例来访问 Clipboard。有关访问 TopLevel 的更多详细信息,请访问TopLevel页面:

var clipboard = window.Clipboard;

方法​

GetTextAsync()​

异步从剪贴板检索文本。任务的结果值是剪贴板中的文本。如果剪贴板不包含文本或为空,则该方法返回 null。

Task<string?> GetTextAsync()
备注

Avalonia 剪贴板始终处理 Unicode 文本。

SetTextAsync(string? text)​

异步设置剪贴板文本,并立即清除剪贴板。该方法接受 string? 参数,用于复制需要的文本。如果提供的文本为 null,则剪贴板将被清除。

Task SetTextAsync(string? text)
备注

与不同的 Win32 剪贴板 API 不同,Avalonia 剪贴板始终刷新数据,永远不会延迟。

ClearAsync()​

异步清除剪贴板并立即刷新。

Task ClearAsync()

SetDataObjectAsync(IDataObject data)​

异步将剪贴板内容设置为指定的数据对象。该方法接受 IDataObject 参数。数据对象可以包含多种数据格式。

Task SetDataObjectAsync(IDataObject data)
备注

与不同的 Win32 剪贴板 API 不同,Avalonia 剪贴板始终刷新数据,永远不会延迟。

GetFormatsAsync()​

异步检索当前存储在剪贴板中的格式列表。任务的结果值是一个字符串格式名称的数组。

Task<string[]> GetFormatsAsync()

GetDataAsync(string format)​

异步从剪贴板中检索指定格式的数据。该方法返回一个 Task<object?>,代表该操作。任务的结果值是指定格式的剪贴板数据。如果剪贴板中没有指定格式的数据,则该方法返回 null。

Task<object?> GetDataAsync(string format)

创建要发送到剪贴板的 DataObject​

您可以将对象存储在剪贴板上,并使用不同的格式在某些平台上进行存储。

C#
private async void CopyButton_OnClick(object? sender, RoutedEventArgs args)
{
var clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
var dataObject = new DataObject();
dataObject.Set(DataFormats.Text, "Hello World");
await clipboard.SetDataObjectAsync(dataObject);
}

平台兼容性:​

功能WindowsmacOSLinux x11浏览器AndroidiOS
GetTextAsync✔✔✔✔**✔✔
SetTextAsync✔✔✔✔✔✔
ClearAsync✔✔✔✔✔✔
GetFormatsAsync✔✔✔✖*✖*✖*
SetDataObjectAsync✔✔✔✖*✖*✖*
GetDataAsync✔✔✔✖*✖*✖*

* 在技术上可能可行,但尚未实现。欢迎贡献!

** 在 Mozilla 浏览器中,GetTextAsync 方法仅在触发“粘贴”手势后才起作用,通常是通过使用 Ctrl+V。