Press "Enter" to skip to content

Tag: WPF

4 – MultiClock – Aggiungere la possibilità di configurare i colori di ogni orologio

Una nuova richiesta dagli utenti della nostra applicazione, che hanno riferito che poter avere orologi di colore diverso per ogni diverso fuso orario sarebbe una cosa utile a chi li guarda per focalizzarsi subito sull’orologio necessario.

Pertanto, per poterlo realizzare abbiamo bisogno di fare alcune modifiche in vari punti del nostro progetto MultiClock, in modo da ottenere quanto visibile nell’immagine qui sotto.

Comments closed

2 – Multi Clock – Miglioriamo la User interface

In questo secondo articolo dedicato all’orologio multi fuso orario che abbiamo costruito nel precedente articolo, vogliamo migliorare la qualità del comportamento della nostra User Interface. Se avete provato la versione 1.0 del nostro orologio avrete notato 2 problemi che erano presenti nella gestione della configurazione degli orologi, se non lo aveste fatto, i problemi sono i seguenti:

  • Annullando le modifiche effettuate in configurazione, chiudendo senza salvare, sembrava che tali modifiche non fossero state applicate, ma alla chiusura e riapertura dell’applicazione invece le modifiche annullate venivano comunque applicate e gli orologi modificati.
  • Chiudendo la finestra senza salvare, il sistema non chiedeva alcuna conferma prima di annullare le modifiche.

Il motivo di questi due problemi, ovviamente correlati è il seguente:

  1. La modifica alla configurazione nella versione 1.0 viene effettuata direttamente sui dati attualmente in uso.
  2. A causa di questo, visto che alla chiusura della finestra principale i dati di configurazione vengono comunque automaticamente aggiornati per salvare le dimensioni della finestra, anche le modifiche annullate vengono salvate.
  3. Modificando direttamente i dati attuali di configurazione, non c’era modo di sapere se al momento della chiusura della finestra c’erano state variazioni quindi non era possibile notificare l’utente.

Vediamo quindi come ovviare ai problemi e rendere il nostro orologio un po’ più professionale.

Comments closed

1 – Multi Clock – Un applicazione in WPF

Qualche giorno fa, ero in ferie e ovviamente pioveva a dirotto, così ho deciso di fare una piccola applicazione che serve a me e ai miei colleghi in ufficio visto che lavoriamo quasi esclusivamente con aziende estere e più o meno tutte sono su fusi orari diversi dal nostro. Mentre sviluppavo la piccola applicazione che mi sono immaginata, mi sono resa conto che pure essendo semplice, potrebbe essere didatticamente interessante, pertanto, invece di farla divenire un progetto aziendale, l’ho fatta divenire un progetto DotNetwork, e la costruirò usando questo articolo, poi la modificherò aggiungendo nuove funzionalità e spiegando varie cose in alcuni articoli successivi.

L’applicazione verrà sviluppata in MVVM basico, cercando di far comprendere i concetti fondamentali del Binding e facendo vedere a chi si approccia alla programmazione C# XAML che non è difficile, che è potente e davvero ottima per creare applicazioni desktop.

La User Story

Partiamo indicando quali sono le richieste dei “clienti” in questo caso io e i miei colleghi. Spesso, ci troviamo ad organizzare video conferenze con i nostri clienti che si trovano su fuso orario diverso, pertanto se prima di chiamarli possiamo sapere che ore sono a casa loro evitiamo di svegliarli alle quattro del mattino, o di chiamarli mentre sono a pranzo o a cena. Per farlo, ci serve avere un orologio che possa mostrare l’ora di un diverso fuso orario. Ovviamente, l’appetito vien mangiando e la richiesta è divenuta, “Ma non potremmo avere un applicazione con una serie di orologi?”. Pertanto la storia è la seguente:

“Vorremmo un applicazione che ci mostri l’ora locale e l’ora di almeno due o tre diversi fusi orari, quelli che usiamo più spesso così è facile sapere come schedulare video conferenze, telefonate e anche appuntamenti.”

Comments closed

Come creare un applicazione WPF che rimane in esecuzione mostrando icona e menu in Tray Area

A seguito di una richiesta effettuata sul forum italiano Microsoft, esattamente Questo Thread ho deciso che oltre all’articolo che mostra come usare la Notify Icon di Windows forms per mostrare la sua icona nella Tray Area di scrivere anche lo stesso progetto per WPF, pertanto sono andata a cercare il componente corrispondente nel framework WPF. Sfortunatamente, come per altri controlli, non esiste un controllo standard del framework che permetta di fare tutto ciò. La soluzione più semplicemente suggerita è quella di utilizzare il controllo Windows Forms oppure un controllo di terze parti.

Se volete utilizzare un controllo avanazato scritto da un “code addict” e disponibile gratuitamente, ecco il link al blog di Philipp Sumi dove potete trovare il controllo WPF Notify Icon, e se mi scappa magari farò un post utilizzandolo.

Io invece, faccio l’esempio da pigrizia totale e utilizzerò il controllo Windows Forms, anche perché serve a dimostrare l’interoperabilità fra Windows Forms e WPF.

solution_01

Comments closed

WPF Utilizzare una ListView in modo Classico o in Binding con MVVM

Un post che deriva da un thread su Stack Overflow in cui un principiante non riusciva a capire come recuperare il selected item di una ListView intercettando gli eventi. Dal codice esempio che ha mostrato, stava utilizzando l’interfaccia WPF nella stessa modalità in cui avrebbe fatto in una applicazione Windows Forms, cosa che è fattibile e funziona perfettamente, ma è un po come utilizzare un trattore da 500 cavalli per arare le aiuole del nostro orto condominiale.

Pertanto, ho deciso di creare questo esempio che mostra come utilizzare WPF come eravamo abituati a fare con le windows forms, e quindi creare una applicazione event driven, e come utilizzare invece WPF nel modo corretto e quindi creare una applicazione Data Driven, dove tutto quello che è la forma e il design della parte grafica è indipendente dalla gestione dei dati.

mainwindow_01

Comments closed

Stampare da una applicazione WPF

Ho pubblicato un post qualche giorno fa, in risposta ad una domanda sul Forum Microsoft dedicato a C# per mostrare come si può creare un report utilizzando Windows Forms e quel che ci mette a disposizione per le stampe.

Considerato che io lavoro in WPF, e che WPF è un sistema per scrivere programmi desktop molto più efficiente, potente ed interessante delle Windows Forms, credo sia opportuno mostrare quali sono gli strumenti che abbiamo a disposizione per effettuare delle stampe da WPF.

Per fare questo, ho creato una piccola applicazione simile a quella usata per windows forms, questa applicazione carica il contenuto della tabella Customers del database storico Northwind su una Datagrid, e ci mette a disposizione 3 buttons che mostrano i 3 metodi principali per stampare da WPF.

mainwindow_01

Comments closed

Creare, attivare, disattivare controlli a runtime

In risposta ad una domanda posta su Stack overflow  dove un utente chiedeva come creare dei controlli a runtime che simulino una ShowDialog, visto che mi sembrava una richiesta interessante a cui rispondere ho creato un piccolo esempio che effettua esattamente questo. Vediamo come ho fatto.

mainwindow_01

La main window simula un programma con varie funzionalità sulla finestra principale. Lo spazio vuoto è destinato ad accogliere gli user control generati a runtime. Le textbox ed i bottoni sulla sinistra non hanno alcuna funzionalità, mentre i tre bottoni in basso creano i controlli “showdialog”.

Comments closed

Come Usare due diverse liste per pilotare un singolo dettaglio

Questo esempio è stato creato in risposta ad un thread sul forum Microsoft che riguardava Un problema sull’assegnare il focus su una maschera con due liste in realtà il problema non è il focus sulle Liste, ma un problema un po’ più “tricky” più complicato e legato alla gestione del databinding.

Questo esempio mostra come aggirare questo tipo di problema, ma poi mostro anche come approccerei in modo diverso l’interfaccia per evitare il problema, vediamo intanto cosa abbiamo creato e come funziona e poi discuteremo una possibile alternativa allo scenario.

mainwindow_01

Da quanto indicato da chi ha posto il quesito sul forum, la sua interfaccia per la messaggistica interna all’azienda ha una finestra con due liste, messaggi IN e messaggi OUT, al click di un messaggio, il suo contenuto viene visualizzato nella parte di dettaglio.  Il problema segnalato è che quando l’utente passa da una lista all’altra il messaggio selezionato non cambia sempre e quindi l’utente non comprende cosa sta guardando.

Vediamo come abbiamo implementato la parte XAML.

Comments closed

Convertire un foglio di Excel in JSON

Nel precedente post, abbiamo visto come convertire un foglio di Excel in XML, ma considerato che il formato JSON sta diventando lo standard per lo scambio di dati, soprattutto quando si parla di servizi Web, e di applicazioni di ogni genere e tipo, credo sia una cosa buona vedere come svolgere lo stesso tipo di conversione creando un file JSON. Per farlo, oltre ad utilizzare la libreria open source EPPlus, la trovate all’inidirizzo:  epplus.codeplex.com per leggere i dati dal foglio di Excel, utilizzeremo JSON.Net ovvero la libreria Newtonsoft Json che è divenuta ormai lo standard utilizzato da tutte le applicazioni .net per creare il file in formato JSON.

Anche in questo caso, l’esempio vuole illustrare come convertire un file in formato generico, senza dover per forza creare una classe .Net in cui memorizzare i dati della tabella Excel per poi convertirla. Serve per le conversioni Una-Tantum o quando vi venissero inviati dati generici che magari devono divenire una Tabella di dati di configurazione per una applicazione che non avrà bisogno di essere riconvertita in seguito.

Vediamo anche in questo caso l’applicazione WPF, che con eccessiva fantasia stavolta ho chiamato FromExcelToJson.

mainwindow_01

Comments closed

Convertire un foglio di Excel in XML

Un collega mi ha chiesto un suggerimento su come fare un programma per leggere dati da un foglio di Excel e convertirli in un file XML, considerato che è qualcosa che potrebbe accadere anche spesso, visto che soprattutto i non informatici hanno una propensione per utilizzare i fogli di Excel come database. O come formato standard di scambio dati, ho deciso di fare un esempio che mostra come utilizzare la libreria Open Source EPPlus, la trovate all’inidirizzo:  epplus.codeplex.com per leggere un file di Excel e scrivere un documento XML senza utilizzare per questo una specifica classe.

Perché questo esempio? perché è semplice da utilizzare per ricevere dati di tipo One Shot ovvero ci arriveranno una sola volta, quindi non vale la pena di costruire una classe entity e una collection per leggere una sola volta un foglio di Excel.

Vediamo come è fatta l’applicazione, si tratta di una applicazione WPF che ho chiamato con molta fantasia FromExcelToXml che contiene una sola Window, MainWindow:

MainWindow_01

Comments closed