marzo 2010 Blog Posts
Ovviamente non dobbiamo reinventare tutto ogni qualvolta creiamo un’applicazione nuova e vogliamo utilizzare l’M-V-VM, ma esistono dei framework già belli e pronti:
PRISM http://compositewpf.codeplex.com/
MVVM light toolkit http://www.galasoft.ch/mvvm/getstarted/
WPF Onyx http://wpfonyx.codeplex.com/
Caliburn http://caliburn.codeplex.com/
Ocean http://karlshifflett.wordpress.com/2009/01/26/ocean-framework-released-mvvm-for-wpf-line-of-business-update/
Abbiamo visto fin qui come creare una UI gradevole all’utente e come fare il binding dei dati corretto.
Ma come si può programmare correttamente e creare un’applicazione testabile? Qual è il modo più corretto per sviluppare un’applicazione WPF?
Ci vengono in aiuto gli stessi sviluppatori di Blend dandoci in mano un pattern, il Model-View-ViewModel.
Questo pattern consente una separazione tra la UI e i dati stessi, permettendo una testabilità del codice completa.
E’ derivato da MVC – Presentation Model.
Vi consiglio questo video di Corrado Cavalli.
http://www.microsoft.com/italy/beit/Msdn.aspx?video=24878a7f-235d-43ae-8aec-f09c2224fe49
http://www.winfxitalia.com/articoli/presentation-foundation/architettura-model-view-viewmodel-wpf-p-1.aspx
In inglese :
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
Da analizzare anche il command binding:
http://blog.raffaeu.com/archive/2009/06/15/wpf-and-mvvm-tutorial-04-the-commands.aspx
http://dotnetcenter.it/articles/10/MVVM-per-la-realizzazione-di-client-WPF.html
Vi consiglio inoltre i seguenti video che, oltre a riprendere il MVVM riprendono...
Tempo fa su un forum è apparsa la seguente domanda:
“Ciao a tutti.
Ho sempre sviluppato in Windows Forms e non ho mai avuto problemi, ma
mi sto affezionando sempre di più alla nuova tecnologia WPF.
Sto per iniziare a scrivere un nuovo gestionale e mi chiedevo se fosse
meglio continuare con Windows Forms o passare a WPF.
Per un gestionale, WPF è realmente utile?...
Ma in WPF abbiamo solo vantaggi? Si e no, anche se i primi superano notevolmente i secondi.
Se diamo uno sguardo ai componenti resi disponibili da WPF si nota subito la mancanza della datagrid…
Ma la datagrid è realmente necessaria? Ne siamo proprio sicuri?
http://blogs.ugidotnet.org/BlogEma/archive/2009/11/13/avoid-datagrid-ot-del-venerdi.aspx
http://blogs.ugidotnet.org/BlogEma/archive/2009/11/27/avoid-datagrid-seconda-puntata.aspx
Comunque, se abbiamo proprio bisogno di visualizzare i nostri dati in una datagrid possiamo utilizzare il WPF toolkit:
...
Abbiamo visto come creare la UI di una applicazione WPF, abbiamo visto il BIND, ora vediamo gli stili.
STILI
Gli stili definiscono un gruppo di proprietà che è possibile assegnare a un determinato tipo di controlli per influenzarne l'aspetto estetico
Gli stili risiedono all'interno delle risorse di un contenitore di controlli (es. Window.Resources, StackPanel.Resources e così via).
Vi consiglio questi link:
http://www.winfxitalia.com/articoli/presentation-foundation/gestire-risorse-stili-wpf-1.aspx
http://www.winfxitalia.com/articoli/presentation-foundation/gestire-risorse-stili-wpf-2.aspx
http://community.visual-basic.it/greg/archive/2009/10/26/26796.aspx
http://msdn.microsoft.com/it-it/library/cc294894%28Expression.30%29.aspx
I Trigger invece vengono utilizzati per applicare i valori delle proprietà stabilite negli elementi Setter solo al verificarsi di una determinata condizione.
I Trigger sono molto potenti ed è possibile, ad esempio, valutare...
Abbiamo quindi diversi Binding:
· Simple bind, è la semplice associazione tra oggetto e percorso
· Element Bind è il bind tra un elemento e l’altro , ad esempio tra uno slider e una label che visualizzerà il valore dello slider
Abbiamo poi diverse modalità di binding che determinano il comportamento:
OneWay
TwoWay
OneTime OneWayToSource
Un’altra componente molto importante sui binding sono i converter:
http://www.winfxitalia.com/script/29/StringFormatConverter-Binding-WPF.aspx
http://blogs.msdn.com/bencon/archive/2006/05/10/594886.aspx
http://dotnetside.org/blogs/vito/archive/2007/07/03/ValueConverter-per-la-formattazione-in-WPF.aspx
Altri elementi molto importanti è l’implementazione e l’utilizzo dell’INotifyPropertyChanged che consente di notificare alla UI il cambio di valore delle property dell’oggetto in datacontext, e ObservableCollection.
http://www.visual-basic.it/articoli/adsWPF_DataBinding.htm
http://www.winfxitalia.com/script/25/Creare-Collezioni-Utilizzabili-Binding-WPF.aspx
Il Binding è possibile definirlo non sono utilizzando XAML ma anche via codice:
TextBox nameTextBox = new TextBox();
Binding nameTextBinding = new Binding("Name");
nameTextBinding.Source = person;
nameTextBox.SetBinding(TextBox.TextProperty, nameTextBinding);
// set style on text box, add text box to container etc
TextBox positionedTextBox = new TextBox();
Binding positionBinding = new Binding("Minute");
positionBinding.Source = System.DateTime.Now;
positionedTextBox.SetBinding(Canvas.TopProperty, positionBinding);
mainCanvas.Children.Add(positionedTextBox);
Anche...
Abbiamo visto come costruire interfacce WPF, e abbiamo visto come si utilizza XAML. Se avete notato ai controlli spesso non mettiamo i nomi in quanto … non necessari! Per un programmatore Windows Forms questo è forse lo scoglio più grande! Abituati da anni a nominare qualunque controllo, quello di non utilizzare più i nomi in quanto non più strettamente necessario al corretto funzionamento dell’applicazione è, a mio avviso, il problema più grosso. La domanda sorge spontanea: e come si fa a visualizzare i dati? E qui entra in gioco il DataBinding.
http://g.www.ms.akadns.net/italy/beit/Generic.aspx?video=004458eb-a56c-43ca-9644-b7e5a9d5169a
Assieme al DataBinding entrano in...
Dovreste aver capito quindi che per costruire una buona applicazione WPF oltre a Visual Studio è necessario l’adozione di uno strumento di Design quale Expression Blend. In pratica con Visual Studio si imposta quello che sarà il codice, e una bozza della UI. Poi in Expression Blend il designer potrà creare un’interfaccia utile gradevole ed essenziale per l’utente. In entrambi i casi è necessario conoscere l’XML e più precisamente il linguaggio XAML. Segnalo questi due tutorial molto interessanti per chi arriva dalla normale programmazione Windows Forms: http://www.microsoft.com/italy/beit/Msdn.aspx?video=9d2bb405-ac2a-47c4-b797-fd84852d7c3b http://www.microsoft.com/italy/beit/Msdn.aspx?video=2372e8e7-939e-429c-beea-6465651cf734 Per approfondire XAML : http://msdn.microsoft.com/en-us/library/ms752059.aspx ...
Vi giro il link di un bellissimo PDF sul come costruire una UI in stile OUTLOOK usando Blend.
Vi guiderà passo passo, partendo da un progetto base, nella costruzione della UI.
http://www.microsoft.com/switzerland/msdn/de/presentationfinder/detail.mspx?id=104056
Abbiamo visto cos’è XAML e l’abbiamo definito come un nuovo linguaggio basato su XML.
Introduciamo quindi WPF, vediamo il seguente post di Corrado Cavalli
http://www.microsoft.com/italy/beit/Msdn.aspx?video=72c25485-edb8-4196-9300-5b17f11d0fb3#1
Come vedrete dal video (che potete pure scaricare) l’approccio in disegno della UI cambia radicalmente rispetto a Windows Forms.
Buona visione