Copiar y pegar

Este artículo explica cómo admitir las funciones copiar y pegar en aplicaciones para la Plataforma universal de Windows (UWP) usando el portapapeles. Copiar y pegar es la forma clásica de intercambiar datos entre aplicaciones o dentro de una aplicación y casi todas las aplicaciones admiten operaciones del portapapeles hasta cierto punto. Para ver ejemplos de código completos que muestran varios escenarios de copia y pegado diferentes, consulte el ejemplo del Portapapeles.

Comprobar la compatibilidad integrada del portapapeles

En muchos casos, es posible que no necesites escribir código para admitir las operaciones del Portapapeles. Muchos de los controles XAML predeterminados que puedes usar para crear aplicaciones ya admiten las operaciones del portapapeles.

Prepárate

En primer lugar, incluye el espacio de nombres Windows.ApplicationModel.DataTransfer en la aplicación. A continuación, agrega una instancia del objeto DataPackage. Este objeto contiene los datos que el usuario quiere copiar y también las propiedades (como la descripción) que quieres incluir.

DataPackage dataPackage = new DataPackage();

Copiar y cortar

Copiar y cortar (también denominado mover) funcionan prácticamente de la misma manera. Elige qué operación quieres realizar con el uso de la propiedad RequestedOperation.

// copy 
dataPackage.RequestedOperation = DataPackageOperation.Copy;
// or cut
dataPackage.RequestedOperation = DataPackageOperation.Move;

Establecer el contenido copiado

A continuación, puedes agregar los datos que un usuario ha seleccionado para el objeto DataPackage. Si esta clase DataPackage admite estos datos, puede usar uno de los métodos correspondientes del objeto DataPackage . A continuación se muestra cómo agregar texto mediante el método SetText :

dataPackage.SetText("Hello World!");

El último paso es agregar DataPackage al portapapeles llamando al método estático SetContent.

Clipboard.SetContent(dataPackage);

Pegar

Para obtener el contenido del portapapeles, llama al método estático GetContent. Este método devuelve un objeto DataPackageView que incluye el contenido. Este objeto es casi idéntico a un objeto DataPackage, con la excepción de que su contenido es de solo lectura. Con ese objeto, puedes usar los métodos AvailableFormats o Contains para identificar los formatos disponibles. Después, puedes llamar al método DataPackageView correspondiente para obtener los datos.

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;
    }
}

Seguimiento de cambios en el portapapeles

Además de los comandos copiar y pegar, también puedes realizar un seguimiento de cambios en el portapapeles. Para hacerlo, debes controlar el evento ContentChanged del portapapeles.

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;
    }
}

Vea también