Condividi tramite


Copiare e incollare

Questo articolo illustra come supportare la funzionalità di copia e incolla nelle app UWP (Universal Windows Platform) usando gli Appunti. Copiare e incollare è il modo classico per scambiare dati tra app o all'interno di un'app e quasi tutte le app possono supportare le operazioni degli Appunti in qualche modo. Per esempi di codice completi che illustrano diversi scenari di copia e incolla, vedere l'esempio della clipboard .

Verificare il supporto incorporato degli Appunti

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

Preparati

In primo luogo, includere lo spazio dei nomi Windows.ApplicationModel.DataTransfer nell'app. Quindi, aggiungere 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 spostare) funzionano quasi esattamente allo stesso modo. Scegli quale operazione desideri utilizzando la proprietà RequestedOperation.

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

Impostare il contenuto copiato

Successivamente, è 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 statico SetContent.

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 questo oggetto, è possibile usare il AvailableFormats o il metodo 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 ai comandi di copia e incolla, potresti anche voler tenere traccia delle modifiche degli appunti. Per fare ciò, gestire 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;
    }
}

Vedere anche