Site: http://blogs.ugidotnet.org/corrado/Default.aspx Link: http://feeds.feedburner.com/corrado
by Corrado Cavalli via Corrado's BLogs on 3/8/2010 9:42:59 PM
Un applicazione WPF/Silverlight basata su Model-View-ViewModel è il risultato di un insieme di dettagli che fanno la differenza, ad esempio una delle cose che sto iniziando ad apprezzare e grazie al quale è possibile fare delle cose veramente carine con poco sforzo è il VisualStateManager (che in WPF 4.0 diventa parte integrante della piattaforma) Prendiamo un caso molto semplice: Cambiare il colore di un rettangolo (ma la cosa potrebbe essere complessa a piacere) alla pressione di un tasto. ...
[ read more ]
by Corrado Cavalli via Corrado's BLogs on 3/7/2010 7:01:22 AM
Sto lavorando su un applicazione Silverlight che, tra le varie funzionalità, deve eseguire il play di streams in formato .wma e per questo requisito la scelta cade automaticamente sulla classe MediaElement. Convinto della banalità della cosa ho scritto qualcosa tipo: MediaElement me = new MediaElement(); me.Source = new Uri("http://thesite.com/stream.wma", UriKind.Absolute); me.Play(); per scoprire che non funziona, ho quindi rimediato usando: WebClient wc = new ...
by Corrado Cavalli via Corrado's BLogs on 2/4/2010 10:30:34 PM
Quando si usa la funzionalità Edit Template->Edit a Copy di Blend Blend in realtà crea uno style che applica il template appena estratto. Personalmente mi piace organizzare le risorse all’interno di resource dictionaries (styles.xaml, templates.xaml…) e, sebbene Blend permetta di specificare dove posizionare lo style il risultato è che style e template sono tutt’uno e spesso finisco per spostare il template nel relativo resource dictionary e linkarlo nello style via {StaticResource} man ...
by Corrado Cavalli via Corrado's BLogs on 1/12/2010 6:16:54 AM
Se sviluppate un applicazione WPF 4.0 e utilizzate Blend preview for .NET 4.0 per disegnare la UI fate attenzione che se utilizzate Font Embedding (vedi immagine) la vostra applicazione diventa dipendente dall’ SDK di Blend a causa di questa righe inserita nel file di progetto <Import Project="$(MSBuildExtensionsPath)\Microsoft\Expression\Blend\3.0\WPF\Microsoft.Expression.Blend.WPF.targets" /> e di conseguenza il progetto non verrà caricato in assenza dell’installazione di Blend. P ...
by Corrado Cavalli via Corrado's BLogs on 1/9/2010 3:25:31 PM
Gestire situazioni in cui si hanno problemi di concorrenza tra utenti con i WCF RIA Services è veramente molto semplice, supponiamo di voler sapere se durante un operazione di update qualcuno ha modificato prima di noi gli stessi records. Il codice da scrivere è il seguente: private void OnUpdate(object sender, RoutedEventArgs e) { this.customersContext.SubmitChanges(lop => { if(lop.HasError) { MessageBox.Show(lop.En ...
by Corrado Cavalli via Corrado's BLogs on 12/31/2009 8:20:23 AM
Un altra interessante novità di Silverlight 4.0 è il fatto che il default template di ListBox/ComboBoxItem include tre nuovi stati: BeforeLoaded,Loaded e Unloaded. Agendo su questi stati è possibile modificare lo stato dell’item quando questo viene aggiunto e/o rimosso dalla lista, con Blend4 gestire questi stati è semplicissimo: Aggiungiamo una listbox (o combobox) ad una pagina ed editiamone il relativo ItemContainerStyle: A questo punto andiamo ad agire sugli stati indicati in precede ...
by Corrado Cavalli via Corrado's BLogs on 12/30/2009 10:42:55 AM
Ho parlato di MEF (Managed Extensibility Framework) parecchio tempo fa, ora che il framework è ben definito è evidente che se dovete sviluppare un applicazione ‘dinamica’ (o a plug-in se preferite) MEF è sicuramente la tecnologia da utilizzare. Ovviamente se l’applicazione è WPF o Silverlight l’accoppiare MEF e Model-View-ViewModel è d’obbligo, ecco quindi un semplice esempio di M-V-VM basato sul principio di composizione di MEF. Data Provider public interface IProvider { ...
by Corrado Cavalli via Corrado's BLogs on 12/30/2009 8:00:44 AM
Silverlight 3.0 ha introdotto l’oggetto Frame grazie al quale è possibile navigare le pagine che compongono l’intera applicazione, l’utilizzo di Frame è abbastanza semplice, supponendo infatti di avere la pagina principale della nostra applicazione (MainPage.xaml) definita in questo modo: <Grid x:Name="LayoutRoot"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="2*" /> </ ...
by Corrado Cavalli via Corrado's BLogs on 12/21/2009 8:59:57 PM
Scopo: Muovere un elemento X dalla posizione “A” alla “B” usando l’oggetto VisualStateManager di WPF e Silverlight. In tutti e tre i casi (WPF 3.5, WPF 4.0 e Silverlight X) lo XAML generato da Blend è esattamente lo stesso: 1: <Grid x:Name="LayoutRoot"> 2: <VisualStateManager.VisualStateGroups> 3: <VisualStateGroup x:Name="States"> 4: <VisualState x:Name="Normal"/> 5: <VisualState x:Name="Moved"< ...
by Corrado Cavalli via Corrado's BLogs on 12/13/2009 1:55:44 PM
Fino alla versione 3.0 l’unica tipologia di transport supportata da Silveright nei servizi WCF era l’HttpTransport nelle due varianti: BasicHttpBinding o la versione dove TextMessageEncoding viene sostituito da BinaryMessageEncoding migliorando leggermente le prestazioni. In Silverlight 4.0 è stato aggiunto il supporto a TcpTransport ovvero la possibilità di interagire con endpoints che utilizzando NetTcpBinding migliorando,non poco, sopratutto in contesti Intranet la velocità di comunicazione ...
by Corrado Cavalli via Corrado's BLogs on 11/7/2009 8:46:31 PM
Col SP1 del framework 3.5 è stato introdotto il namespace System.ComponentModel.DataAnnotations il quale ha al suo interno degli interessanti attributi di validazione (dettagli qui) Ad esempio, volendo validare una proprietà del nostro ViewModel, quello che dobbiamo fare è semplicemente scrivere del codice come quello che segue dopo aver aggiunto un riferimento a System.ComponentModel.DataAnnotations: 1: public class MyViewModel:INotifyPropertyChanged 2: { ...
by Corrado Cavalli via Corrado's BLogs on 11/7/2009 10:28:24 AM
Usare delle combinazioni di tasti oppure il mouse come shortcut per alcune funzionalità tipo Apri, Stampa, Salva etc è un requisito abbastanza comune, peccato che gestire questo aspetto utilizzando il pattern Model-View-ViewModel non sia proprio banale a causa di una piccola limitazione: la proprietà Command dell’oggetto KeyBinding non è una dependency property. Il workaround ovviamente esiste, è però un peccato che si debba reinventare la ruota per realizzare banalità del genere. Con WPF ...
by Corrado Cavalli via Corrado's BLogs on 10/19/2009 7:54:02 PM
Come se non ci fosse già abbastanza roba da installare, ecco il Silverlight3 Toolkit October 2009 installation: http://silverlight.codeplex.com/ Tra le principali novità: Il supporto a VS2010 (che include finalmente il designer per Silverlight ) Supporto da parte di alcuni controlli della MouseWheel La gestione integrata (ovviamente nel browser) del drag and drop, per quest’ultima feature consiglio questo post: http://themechanicalbride.blogspot.com/2009/08/new-with-silverlight-tool ...
by Corrado Cavalli via Corrado's BLogs on 9/20/2009 5:21:39 PM
Questo post nasce da un effettiva richiesta in un newsgroup e, visto che può servire ad altri ecco un piccolo how-to su come personalizzare il controllo Calendar di Silverlight, in particolare la richiesta era quella di cambiare il colore dell’header e delle domeniche, in pratica passare dalla situazione A a quella B (vedi sotto) Una volta capito che il controllo non espone una proprietà che permette di cambiare il colore dell’header e sopratutto appurato che non esiste un contenitore che ...
by Corrado Cavalli via Corrado's BLogs on 9/17/2009 11:00:13 AM
Trovo l’utilizzo di Unity (Dependency injection container) in coppia con Model-View-ViewModel semplicemente eccezionale: la pulizia e il risparmio di codice per iniettare le varie dipendenze “non ha prezzo” (cit.) Un ulteriore esempio di come usare M-V-VM ‘paghi’ l’ho avuta oggi: Alcune pagine dell’applicazione Silverlight sulla quale sto lavorando devono essere ‘cachate’ ovvero devono mantenere lo stato quando l’utente navigando nell’applicazione ritorna in quella pagina, requisito inizialme ...
by Corrado Cavalli via Corrado's BLogs on 9/2/2009 7:14:44 PM
Nella lista dei WPF Disciples si è discusso di come determinare in maniera corretta la modalità Design Mode, ovvero quando il codice sta girando nel contesto di un desginer. Le risposte sono: WPF 1: public static class Designer 2: { 3: private static readonly bool isDesignMode; 4: 5: public static bool IsDesignMode {get { return isDesignMode; }}
... [ read more ]
by Corrado Cavalli via Corrado's BLogs on 9/1/2009 7:16:53 PM
Se, come me, vi piace avere sempre “l’ulima versione” installata segnalo che è disponibile la GDR2 di Silverlight 3 che rispetta la direttiva cinese GB18030. “All products currently sold or to be sold in China must plan the code page migration to support GB18030 without exception. GB18030 is a "mandatory standard" and the Chinese government regulates the certification process to reinforce GB18030 deployment.” source: http://gb18030.org” Per aggiornare bisogna rimuovere il Silverlight 3 SDK e s ...
by Corrado Cavalli via Corrado's BLogs on 9/1/2009 4:33:37 AM
Lavorando su progetti Silverlight mi sto rendendo conto sempre di più come il pattern Model-View-Viewmodel sia in grado di risolvere situazioni che a prima vista possono sembrare irrisolvibili o perlomeno non così immediate come lo sono in WPF. l’ultimo caso in cui mi sono imbattuto è a prima vista banale: Customizzare una listbox affinchè visualizzi delle informazioni evidenziando l’elemento selezionato con un colore diverso, in pratica quello che vedete qui sotto: In WPF grazie ai Tr ...
by Corrado Cavalli via Corrado's BLogs on 8/18/2009 4:51:49 AM
Tempo fa avevo descritto come è possibile propagare le eccezioni da un servizio WCF verso un applicazione Silverlight3. Del procedimento, la parte più noiosa era sicuramente quella necessaria al cambio di HTTP Status Code da 500 a 200, la buona notizia è che grazie alla nuovo Client HTTP Stack presente in Silverlight3 tale cambio non è più necessario, basta infatti aggiungere questa riga allo startup dell’applicazione Silverlight: 1: bool registerResult = WebRequest.RegisterPrefix ...
by Corrado Cavalli via Corrado's BLogs on 8/7/2009 3:10:33 PM
L’altro giorno stavo chattando con Larent Bugnion riguardo nuove features da aggiungere nel suo progetto M-V-VM light toolkit ed entrambi eravamo concordi nella necessità di aggiungere un behavior che mappasse un generico evento verso un comando esposto dal ViewModel. Questa necessità è ancor più sentita in Silverlight dove il meccanismo di commanding, ICommand a parte, non è presente. Un esempio di possibile attached behavior è quello che segue: 1: public static class EventCo ...
by Corrado Cavalli via Corrado's BLogs on 8/6/2009 6:58:26 AM
In un architettura basata su Model-View-ViewModel (MVVM) spesso è necessario ‘iniettare’ nel ViewModel delle entities di supporto al ViewModel stesso, ad esempio, in un ottica ViewModel-First è consuetudine passare nel costruttore una generica IView in modo che il ViewModel possa poi comunicare facilmente con la view stessa. L’utilizzo di un interfaccia fa si che questo approccio non comprometta la testabilità del ViewModel in quanto l’interfaccia è facilmente ‘mockabile’ ma Il fatto di aver ...
by Corrado Cavalli via Corrado's BLogs on 8/4/2009 4:37:12 AM
Ho letto parecchi blog/post che chiedevano come gestire nel migliore dei modi la navigazione in Silverlight3 usando Model-View-ViewModel. Inizialmente sono rimasto un po’ disorientato in quanto abituato ad usare il metodo Navigate esposto da NavigationService e questo in qualche modo implicava la conoscenza di quest’ultimo nel Viewmodel oppure il comunicare via EventAggregator/Mediator/ServiceLocator la richiesta di navigazione verso la View. In realtà ho verificato che la soluzione, alme ...
by Corrado Cavalli via Corrado's BLogs on 7/31/2009 4:49:07 AM
A pochi giorni dal rilascio ufficiale ecco il primo, a dire il vero inaspettato, aggiornamento di Silverlight3 la cui versione passa quindi da 3.0.40624.0 a 3.0.40723.0 L’update è già disponibile via Windows Update oppure qui: http://www.microsoft.com/silverlight/get-started/install/ Non sono previsti aggiornamenti per i vari Tools/SDK etc, l’aggiornamento sembra riguardi: “Excessive media buffering in encoded media which had a lot of script commands in the headers” Technorati Tags: Silve ...
The content of the postings is owned by the respective author. Silverlight Feeds is not responsible for the contents of the postings. This site is automatically generated and cannot be reviewed for abusive content. If you find abusive content on Silverlight Feeds, please contact us. Designated trademarks and brands are the property of their respective owners. All rights reserved.