Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как поддерживать копирование и вставку в приложения универсальной платформы 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!");
Последним шагом является добавление DataPackage в буфер обмена путем вызова статического метода SetContent.
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;
}
}