Copia e Incolla

Questo articolo illustra come supportare le operazioni di copia e incolla nelle app UWP (Universal Windows Platform) usando gli Appunti. Le funzionalità Copia e Incolla rappresentano il modo classico per scambiare dati tra app o all'interno di un'app. Quasi ogni app è in grado di supportare le operazioni degli Appunti. Per esempi di codice completi che illustrano diversi scenari di copia e incolla, vedere l'esempio degli appunti.

Verificare il supporto predefinito degli Appunti

In molti casi, non è necessario scrivere codice per supportare le operazioni degli Appunti. Molti dei controlli XAML predefiniti che puoi usare per creare app supportano già le operazioni degli Appunti.

Effettuare la configurazione

Includere prima di tutto lo spazio dei nomi Windows.ApplicationModel.DataTransfer nell'app. Aggiungere quindi un'istanza dell'oggetto DataPackage . Questo oggetto contiene sia i dati che l'utente desidera copiare e qualsiasi proprietà (ad esempio una descrizione) che si desidera includere.

DataPackage dataPackage = new DataPackage();

Copia e taglia

Copiare e tagliare (detto anche spostamento) funziona quasi esattamente allo stesso modo. Scegliere l'operazione desiderata usando la proprietà RequestedOperation.

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

Impostare il contenuto copiato

È quindi possibile aggiungere i dati selezionati da un utente all'oggetto DataPackage . Se questi dati sono supportati dalla classe DataPackage, è possibile utilizzare uno dei metodi corrispondenti dell'oggetto DataPackage. Ecco come aggiungere testo usando il metodo SetText :

dataPackage.SetText("Hello World!");

L'ultimo passaggio consiste nell'aggiungere il DataPackage agli Appunti chiamando il metodo SetContent statico.

Clipboard.SetContent(dataPackage);

Incolla

Per ottenere il contenuto degli Appunti, chiamare il metodo Statico GetContent . Questo metodo restituisce un oggetto DataPackageView che contiene il contenuto. Questo oggetto è quasi identico a un oggetto DataPackage , ad eccezione del fatto che il relativo contenuto è di sola lettura. Con tale oggetto, è possibile utilizzare il metodo AvailableFormats o Contains per identificare i formati disponibili. È quindi possibile chiamare il metodo DataPackageView corrispondente per ottenere i dati.

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

Tenere traccia delle modifiche apportate agli Appunti

Oltre a copiare e incollare i comandi, è anche possibile tenere traccia delle modifiche degli Appunti. Eseguire questa operazione gestendo l'evento ContentChanged degli Appunti.

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

Vedi anche