Scrivo un'applicazione universale Windows C# in cui l'utente può copiare un file negli Appunti. Ma se l'App è chiusa, il contenuto degli appunti si perde. L'usabilità è orribile se l'utente può perdere il suo contenuto degli appunti così facilmente. C'è un modo per rendere persistente il contenuto degli appunti dell'App come in qualsiasi altra classica applicazione Windows?Contenuto degli Appunti di Windows Universal App chiusa
codice di esempio:
public static void CopyFileToClipboard(StorageFile file) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
dp.SetStorageItems(new List<StorageFile>() { file });
Clipboard.SetContent(dp); // not available after app closed
Clipboard.Flush();
}
public static void CopyTextToClipboard(string text) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
dp.SetText(text); // available after app closed
Clipboard.SetContent(dp);
Clipboard.Flush();
}
//I have tried to copy the file to the app folder first but it has nothing changed.
public async static void CacheAndCopyFileToClipboard(StorageFile file) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
var xfile = await ApplicationData.Current.LocalFolder.CreateFileAsync(file.Name);
await file.CopyAndReplaceAsync(xfile);
dp.SetStorageItems(new List<StorageFile>() { xfile });
Clipboard.SetContent(dp); // not available after app closed
Clipboard.Flush();
}
Quindi la domanda è: come posso mettere un file di appunti in modo che gli utenti possano incollarlo anche se l'App è chiusa?
Modifica: Sembra che sia un problema di tutte le applicazioni universali di Windows, ad esempio se si copia un'immagine nell'app Foto di Windows è possibile incollarla solo mentre è in esecuzione l'app fotografica. Non riesco a immaginare che questo strano comportamento debba essere il comportamento predefinito di Apps. Sembra più un insetto perché non vedo ragioni per questo strano comportamento.
Edit2: Nuovo esempio del problema (grazie a Joe300 per il suo feedback). Funziona con le stringhe ma non con uno StorageFile (anche se prima viene copiato nella cartella dell'app locale). Qual è la ragione per cui il comando Flush() non funziona con i file? C'è qualcosa di speciale da considerare quando i file usati (permessi, ...)?
Non ha risolto il problema se chiudo l'app il file è perso. Call Clipboard.Flush() non ha modificato questo aspetto sebbene la descrizione di questo comando sia simile a questa è la soluzione. Forse questo è un problema con gli oggetti StorageFile perché sembra che funzioni con le stringhe. – ctron
Come stai inizializzando 'StorageFile'? – WiredPrairie
dp.Flush(); non esiste nel DataPackage solo negli Appunti. StorageFile e SetContent non dovrebbero essere il problema perché tutto funziona perfettamente mentre l'app è in esecuzione, ma se l'app è chiusa, gli appunti hanno perso il contenuto. Le estensioni Flush e DataPackageOperation.Copy al mio codice originale non risolvono questo problema ... – ctron