2009-09-09 14 views
8

Czy informacje o IDataError mogą być poprawnie używane w aplikacji WinForm? W przeszłości robiłem swoje wiązanie w zwykły sposób (1) i przeprowadziłem walidację w zdarzeniu OnValidating konkretnej kontroli. Chciałbym przenieść weryfikację danych do modelu domeny, aby móc łatwo wymieniać interfejsy użytkownika i aby cała logika była w jednym miejscu.IDataErrorInfo w winformach

Szukałem IDataErrorInfo, ale wszystko, co znajduję, dotyczy WPF, a aplikacja w fazie rozwoju to aplikacja typu "winForm".

Zauważyłem również, że wiązanie, które zostanie użyte w WPF, znajduje się w System.Windows.Data, a powiązanie, z którego zawsze korzystałem, jest w System.Windows.Forms (którego nie wydaje mi się, gdy mam spróbuj dodać go jako zasób - korzystam z wersji 3.5). Czy z właściwości "ValidatesOnDataErrors" jest różnica między tymi dwoma elementami?

(1) zwykły sposób istota:

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

Odpowiedz

9

Działa to z komponentem ErrorProvider w Windows Forms.

Aby uzyskać kompletny, ale bardzo prosty i krótki samouczek, zobacz this blog post.

+0

+1 Fantastyczny wpis na blogu. Wyleczyłem wszystkie moje obecne niedole. Dziękuję Ci bardzo. –

+4

Wygląda jak link do * fantastycznego wpisu na blogu * jest uszkodzony: sprawienie, że ten link będzie tylko odpowiedź przestarzały. –

+0

@ Bjørn-RogerKringsjå Właściwie nie jest to odpowiedź typu "link only". Sugestia dotycząca 'ErrorProvider' sprawia, że ​​jest to odpowiedź bez linku. – Taryn

1

Tak, IDataErrorInfo prace w WinForms. Na przykład DataGridView użyje tego automatycznie zarówno na wiersz, jak i na komórkę. Jest to jednak specyficzne dla implementacji i nie jest automatycznie stosowane do innych powiązań. Zrobiłem kiedyś napisać jakiś kod, aby powiązać go z dostawcą błędów i wykonać pracę poprzez zmiany, ale niestety nie mam tego na rękę. Ale wydaje mi się, że pamiętam, że nie był ogromny.

Powiązane problemy