Поделиться через


Копирование и вставка

В этой статье объясняется, как поддерживать копирование и вставку в приложениях универсальная платформа 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;
    }
}

См. также