Copiar y pegar

En este artículo se explica cómo admitir la copia y el pegado en aplicaciones de Plataforma universal de Windows (UWP) mediante 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.

Comprobación de la compatibilidad con el Portapapeles integrado

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

Prepárate

En primer lugar, incluya el espacio de nombres Windows.ApplicationModel.DataTransfer en la aplicación. A continuación, agregue una instancia del objeto DataPackage. Este objeto contiene los datos que el usuario quiere copiar y cualquier propiedad (como una descripción) que quiera incluir.

DataPackage dataPackage = new DataPackage();

Copiar y cortar

Copiar y cortar (también denominado movimiento) funcionan casi exactamente igual. Elija la operación que desee mediante la propiedad RequestedOperation.

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

Establecer el contenido copiado

A continuación, puede agregar los datos seleccionados por un usuario al objeto DataPackage. Si la clase DataPackage admite estos datos, puede usar uno de los métodos correspondientes del objeto DataPackage. Aquí se muestra cómo agregar texto mediante el método SetText :

dataPackage.SetText("Hello World!");

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

Clipboard.SetContent(dataPackage);

Pegar

Para obtener el contenido del Portapapeles, llame al método estático GetContent. Este método devuelve una clase DataPackageView que contiene el contenido. Este objeto es casi idéntico a un objeto DataPackage, salvo que su contenido es de solo lectura. Con ese objeto, puede usar el método AvailableFormats o Contains para identificar qué formatos están disponibles. A continuación, puede 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 los cambios en el Portapapeles

Además de copiar y pegar comandos, es posible que también desee realizar un seguimiento de los cambios del Portapapeles. Para ello, controle 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;
    }
}

Consulte también