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