IDataErrorInfo in winforms
-
05-07-2019 - |
Domanda
Le informazioni IDataError possono essere utilizzate correttamente in un'applicazione winforms? In passato stavo eseguendo il binding nel solito modo (1) e ho eseguito la convalida nell'evento OnValidating del controllo specifico. Vorrei spostare la convalida dei dati nel modello di dominio in modo da poter scambiare facilmente le interfacce utente e in modo che tutta la logica sia in un unico posto.
Stavo cercando IDataErrorInfo ma tutto quello che trovo riguarda WPF e l'app in sviluppo è rigorosamente un'app winforms.
Ho anche notato che l'associazione che viene utilizzata in WPF è in System.Windows.Data e l'associazione che ho sempre usato è in System.Windows.Forms (che non sembra avere quando provo per aggiungerlo come risorsa - sto usando 3.5). A parte la proprietà " ValidatesOnDataErrors " c'è una differenza tra i due?
(1) come al solito:
myControl.DataBindings.Add(new Binding("Text", this.domainModel, "Property"));
Soluzione
Funziona con il ErrorProvider componente in Windows Form.
Per un tutorial completo, ma molto semplice e breve, vedi questo post sul blog .
Altri suggerimenti
Sì, IDataErrorInfo
funziona in winforms. Ad esempio, DataGridView
lo utilizzerà automaticamente sia per riga che per cella. Ma è specifico dell'implementazione e non automaticamente applicato ad altri binding. Una volta ho scritto del codice per associarlo a un provider di errori e fare il lavoro tramite eventi di modifica, ma sfortunatamente non ce l'ho. Ma mi sembra di ricordare che non era enorme.