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 cópia e colagem, consulte o exemplo da área de transferência.

Verifique Suporte interno da área de transferência

Em muitos casos, você não precisa gravar código para suportar operações da área da transferência. Muitos dos controles XAML padrão que você pode usar para criar aplicativos já permitem operações na área da transferência.

Prepare-se para começar

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

DataPackage dataPackage = new DataPackage();

Copiar e cortar

Copiar e cortar (também chamado de mover) funcionam quase exatamente da mesma maneira. Escolha qual operação 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 para o 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 inclui o conteúdo. Esse objeto é quase idêntico a um objeto DataPackage, com a diferença de 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 correspondente DataPackageView 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;
    }
}

Acompanhar mudanças na área de transferência

Além dos comandos de copiar e colar, você também pode controlar alterações de área de transferência. Faça isso manipulando o evento ContentChanged da área da 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