Il framework di supporto per le WinForms si chiama Spring.NET RichClient ed è un progetto disponibile a parte rispetto a Spring.NET, sviluppato da Harald Radi. Ad oggi l'ultima versione scaricabile dal sito, la 0.2.1, è un po vecchiotta e presenta diversi problemi, quindi vi consiglio di scaricare l'ultima versione del codice sorgente direttamente dal trunk. Anche in questo questo post mi limiterò a parlare solo dell'integrazione fra le WinFroms ed il Validation Framework, altri aspetti riguardanti le applicazioni Windows e Spring.NET verrànno trattati in post futuri. Finite queste precisazioni iniziamo creando un'applicazione Windows ed aggiungendo i riferimenti alle librerie Spring.Core e Spring.Windows. Continuiamo aggiungendo le ormai consuete classi Person, AddressInfo, il file di risorsa Messages.resx ed il file App.config (contenente la solita configurazione del MessageSource e delle regole di validazione delle classi di domino). Il codice di tutti questi file è presente nei vari post precedenti.
A questo punto dobbiamo creare una nuova Form ereditando dalla ValidatingFrom fornita da Spring.NET, alla quale daremo il nome PersonEditForm. Per facilitare e velocizzare l'esempio utilizzeremo il DataBinding aggiuingendo alla Form un controllo BindingSource, tramite il wizard di Visual Studio impostiamo la proprietà DataSource su Person, quindi proseguiamo trasciniamo dalla Data Sources Toolbox i vari controlli necessari. Proseguiamo aggiungendo un nuovo controllo ValidatorAdapter (namespace Spring.Windows.Validation), collegandolo tramite la proprietà ValidatorName all'id della regola di validazione da utilizzare, in questo caso PersonValidator. Per le TextBox: FirstName, DateOfBirth, City e PostalCode, tramite la proprietà Providrs on ErrorRenderer, indichiamo quale gruppo (Provider) di ErrorMessage visualizzare, impostiamo rispettivamente: FirstNameMessage, DateOfBirthMessage, CityMessage e PostalCodeMessage. Al termine della procedura la Form risulterà simile a quella mostrata in figura.
Spostiamoci nel codice della Form, aggiungiamo un membro di tipo Person, usiamolo come DataSource ed impostiamo i metodi di risposta per l'evento Click di ogni Button:
Effettuiamo, sempre nella Form, l'override del metodo GetFormBackingObject, all'interno del quale non facciamo altro che restituire l'oggetto da validare:
Spring.NET si occuperàdi istanziare un Validator, il quale verrà utilizzato all'interno del metodo OnClosing della From per effettuare la validazione, passandogli come parametro l'oggetto restituito dal metodo GetFormBackingObject. E' importante sottolineare che la validazione verrà effettuata soltato quando il DialogResult della Form è diverso dallo stato di Cancel. La classe Program essere modificata in modo da ereditare dalla classe Application fornita da Spring.NET. Nel metodo Main invochiamo il metodo InitializeContext(), necessario per inizializzare correttamente l' ApplicationContext.
Eseguiamo l'applicazione, clicchiamo il pulsante OK e potremo notare un risultato simile a questo:
Technorati Tag:
Spring.NET