Compartir a través de


Copiar y pegar

En este artículo se explica cómo admitir la copia y el pegado en aplicaciones para la Plataforma universal de Windows (UWP) mediante el Portapapeles. Copiar y pegar es la manera clásica de intercambiar datos entre aplicaciones o dentro de una aplicación, y casi todas las aplicaciones pueden admitir 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 realizar operaciones con el portapapeles. Muchos de los controles XAML predeterminados que puedes usar para crear aplicaciones ya admiten operaciones del Portapapeles.

Prepararse

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 conocido como mover) funcionan casi exactamente igual. Elija qué operación desea 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 consiste en agregar el DataPackage al portapapeles llamando al método estático SetContent.

Clipboard.SetContent(dataPackage);

Pegar

Para obtener el contenido del Portapapeles, utilice el método estático GetContent. Este método devuelve un 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;
    }
}

Rastrear 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