Compartilhar via


Copiar e colar

Este artigo explica como dar suporte a copiar e colar em aplicativos da Plataforma Universal do Windows (UWP) usando a área de transferência. Copiar e colar é a maneira clássica de trocar dados entre aplicativos ou dentro de um aplicativo, e quase todos os aplicativos podem suportar operações da área de transferência em algum grau. Para obter exemplos de código completos que demonstram vários cenários diferentes de copiar e colar, consulte o exemplo da área de transferência.

Verifique se há suporte para área de transferência integrada

Em muitos casos, você não precisa escrever código para dar suporte a operações da área de transferência. Muitos dos controles XAML padrão que você pode usar para criar aplicativos já dão suporte a operações de área de transferência.

Prepare-se para começar

Primeiro, inclua o namespace Windows.ApplicationModel.DataTransfer em seu aplicativo. Em seguida, adicione uma instância do objeto DataPackage. Esse objeto contém os dados que o usuário deseja copiar e todas as propriedades (como uma descrição) que você deseja incluir.

DataPackage dataPackage = new DataPackage();

Copiar e cortar

Copiar e cortar (também conhecido como mover) funcionam quase exatamente da mesma forma. Escolha qual operação você deseja usando a propriedade RequestedOperation.

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

Definir o conteúdo copiado

Em seguida, você pode adicionar os dados que um usuário selecionou ao objeto DataPackage . Se esses dados forem compatíveis com a classe DataPackage, você poderá usar um dos métodos correspondentes do objeto DataPackage. Veja como adicionar texto usando o método SetText :

dataPackage.SetText("Hello World!");

A última etapa é adicionar o DataPackage à área de transferência chamando o método estático SetContent.

Clipboard.SetContent(dataPackage);

Colar

Para obter o conteúdo da área de transferência, chame o método estático GetContent. Esse método retorna um DataPackageView que contém o conteúdo. Esse objeto é quase idêntico a um objeto DataPackage , exceto que seu conteúdo é somente leitura. Com esse objeto, você pode usar o método AvailableFormats ou Contains para identificar quais formatos estão disponíveis. Em seguida, você pode chamar o método DataPackageView correspondente para obter os dados.

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

Controlar alterações na área de transferência

Além dos comandos copiar e colar, você também pode querer controlar as alterações da área de transferência. Faça isso manipulando o evento ContentChanged da área de transferência.

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

Confira também