L'apertura di una applicazione, o più nello specifico di un file, è una delle operazioni che vengono ripetute più spesso durante l'utilizzo del PC. Per gli sviluppatori, associare dei file alle applicazioni che sviluppano, è fondamentale: in questo modo i contenuti dei file stesso possono essere protetti e letti/scritti dall'applicazione stessa, l'avvio dell'applicazione può dipendere da un file specifico e così via, il tutto a beneficio dell'utente finale.
Con la Universal Windows Platform è possibile associare una determinata estensione all'applicazione che stiamo sviluppando attraverso l'uso del tab "Declarations" nel file di manifest. All'interno di questo spazio si può aggiungere la capability "File Type Association" che da la possibilità di specificare i seguenti parametri:
- DisplayName: il nome dell'applicazione;
- Logo: il logo da assegnare ai file che possono essere aperti dall'applicazione;
- Info tip: la descrizione da mostrare quando il mouse fa l'hover sopra i file;
- Name: un nome generico da assegnare all'associazione;
- File Type: un elenco di estensioni che vogliamo aggiungere (tutte in minuscolo e con il carattere "." come prefisso) a cui è possibile specificare il content-type.
Una volta avviata l'applicazione, come quella costruita per questo esempio, in cui l'associazione è per i file con estensione ".aspitalia", tutti i file presenti nel sistema operativo verranno aggiornati per rispettare la nuova icona impostata dall'applicazione stessa (a meno che sia una estensione riservata, tipo ".mp3" in cui questo non avviene perché è l'utente a dover scegliere quale applicazione aprire).
Una volta associato il file però, è necessario che l'applicazione lo gestisca in modo adeguato: ad esempio, nel caso in cui sia un file di testo ci si aspetta di navigare ad una pagina in cui sia possibile leggerne i contenuti, mentre nel caso di un file audio, ci si aspetta di ascoltare immediatamente la riproduzione del file. E' possibile registrarsi ad uno degli eventi Activated della Universal Windows Platform per eseguire le operazioni più adeguate secondo la tipologia di file e la nostra logica di business:
protected override async void OnFileActivated(FileActivatedEventArgs args) { base.OnFileActivated(args); var file = (StorageFile)args.Files[0]; var filePath = file.Path; var read = await FileIO.ReadTextAsync(file); /// ... }
L'esempio di codice dovrebbe essere piuttosto esplicativo e, in questo caso, viene solo fatta una operazione di lettura in modalità asincrona del file, una volta recuperato tramite gli argomenti dell'evento OnFileActivated. Una proprietà molto importante che vale la pena sottolineare da questi argomenti, è la NeighboringFilesQuery che consente di restituire elementi simili disponibili nella stessa cartella: nel caso di una galleria di immagini, facendo doppio click su un file si vedrà solo quello selezionato, mentre scorrendo a destra e a sinistra potremmo mostrare le foto provenienti dalla proprietà dei vicini.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Cambiare la chiave di partizionamento di Azure Cosmos DB
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare Azure Cosmos DB con i vettori
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Potenziare Azure AI Search con la ricerca vettoriale
Applicare un filtro per recuperare alcune issue di GitHub
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare i primary constructor in C#
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
I più letti di oggi
- Visualizzare contenuti Fullscreen con HTML5
- Leggere e scrivere su cookie tramite Blazor
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Realizzare siti sicuri con ASP.NET Web Pages
- Il web control DropDownList di ASP.NET
- Un helper method per replicare un template per ogni proprietà con ASP.NET MVC
- Operazioni di selezione su una DataTable
- Dependency injection in ASP.NET MVC 5 con Ninject
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP