2009-09-09 2 views
8

Le informazioni IDataError possono essere utilizzate correttamente in un'applicazione winforms? In passato stavo facendo il mio binding nel solito modo (1) e ho fatto la convalida nell'evento OnValidating del particolare controllo. Vorrei spostare la convalida dei dati nel modello di dominio in modo che possa facilmente scambiare le interfacce utente e in modo che tutta la logica si trovi in ​​un unico punto.IDataErrorInfo in winform

Stavo cercando IDataErrorInfo ma tutto ciò che trovo si occupa di WPF e l'app in sviluppo è strettamente un'app di Winforms.

Ho anche notato che il binding che viene utilizzato in WPF è in System.Windows.Data e il binding che ho sempre utilizzato è in System.Windows.Forms (che non sembra avere quando prova ad aggiungerlo come risorsa - Sto usando 3.5). Al di fuori della proprietà "ValidatesOnDataErrors" c'è una differenza tra i due?

(1) il solito modo essere:

myControl.DataBindings.Add(new Binding("Text", this.domainModel, "Property")); 

risposta

9

Funziona con il componente ErrorProvider in Windows Form.

Per un tutorial completo, ma molto semplice e breve, vedere this blog post.

+0

+1 Post del blog fantastico. Curato tutti i miei problemi attuali. Grazie mille. –

+4

Sembra che il collegamento al * post del blog fantastico * sia interrotto: rendendo questo collegamento solo una risposta obsoleta. –

+0

@ Bjørn-RogerKringsjå In realtà non è una risposta solo per collegamento. Il suggerimento su 'ErrorProvider' rende questa una risposta senza il link. – Taryn

1

Sì, IDataErrorInfo opere in WinForms. Ad esempio, DataGridView utilizzerà questo automaticamente sia per riga che per cella. Ma è specifico per l'implementazione, e non è automaticamente applicato a altri binding. Una volta ho scritto del codice per associarlo a un fornitore di errori e svolgere il lavoro tramite eventi di cambiamento, ma purtroppo non ce l'ho a disposizione. Ma mi sembra di ricordare che non era enorme.