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
Short-circuiting della Pipeline in ASP.NET Core
Hosting di componenti WebAssembly in un'applicazione Blazor static
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Controllare gli accessi IP alle app con Azure Container Apps
Gestire liste di tipi semplici con Entity Framework Core
Generare token per autenicarsi sulle API di GitHub
Usare le variabili per personalizzare gli stili CSS
Eseguire una query su SQL Azure tramite un workflow di GitHub
Usare una container image come runner di GitHub Actions
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Sfruttare lo streaming di una chiamata Http da Blazor
I più letti di oggi
- Paginare i risultati con QuickGrid in Blazor
- Eliminare una determinata proprietà da un oggetto JavaScript
- Utilizzare il trigger SQL con le Azure Function
- Low code e pro code: come estendere Power Platform con .NET e Visual Studio
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- Q# for Quantum Programming, an "only for the brave" session