Partilhar via


Copiar e colar

Copiar e colar é uma maneira fundamental para os usuários trocarem dados entre aplicativos ou dentro de um aplicativo. Este artigo mostra como implementar a funcionalidade de copiar e colar em aplicações WinUI usando as APIs da área de transferência. Irás aprender a copiar, cortar e colar dados, monitorizar alterações na área de transferência e usar a classe DataPackage para lidar com diferentes formatos de dados.

Observação

Também pode usar estas APIs noutras aplicações de ambiente de trabalho através das APIs do Windows Runtime (WinRT). Para mais informações, consulte Call Windows Runtime APIs em aplicações de ambiente de trabalho.

Verifique se há suporte integrado à área de transferência

Em muitos casos, não é necessário 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á oferecem suporte a operações da área de transferência.

Prepare-se

Primeiro, inclua o Windows. ApplicationModel.DataTransfer namespace na sua aplicação. Depois, adiciona uma instância do objeto DataPackage. Este objeto contém os dados que o usuário deseja copiar e quaisquer propriedades (como uma descrição) que você deseja incluir.

using Windows.ApplicationModel.DataTransfer;
...
var dataPackage = new DataPackage();

Copiar e cortar

Copiar e cortar (também referido 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

De seguida, pode adicionar os dados que um utilizador selecionou ao objeto DataPackage. Se esses dados forem suportados pela 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!");

O último passo é 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. Este método devolve um DataPackageView que contém o conteúdo. Este objeto é quase idêntico a um objeto DataPackage, exceto que o seu conteúdo é apenas de leitura. Com esse objeto, você pode usar o método AvailableFormats ou Contains para identificar quais formatos estão disponíveis. Depois, 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;
    }
}

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

Além dos comandos de copiar e colar, também poderá desejar controlar as alterações na á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;
    }
}