W mojej aplikacji opartej na MVVM potrzebuję do sprawdzania poprawności pól z wpisu danych. Jeśli to możliwe, chciałbym użyć standardowego wiązania sprawdzania poprawności WPF z ErrorTemplates.Walidacja deterministyczna i asynchroniczna w WPF
Jednak chciałbym wykonanie logiki walidacji być całkowicie napędzany/wywołany przez ViewModel (Push do widoku, a nie ciągnąć przez View) z następujących powodów:
- musi pracować asynchronicznie ponieważ logika sprawdzania poprawności może trochę potrwać.
- muszę być bardziej deterministyczne i drobnoziarnista kiedy logika walidacja ma być wykonane (np tylko gdy użytkownik kliknie przycisk „Zastosuj” lub gdy stan wewnętrzny zmienione w taki sposób, że przyjęcie nagle stają się nieważne)
Wiem, że Silverlight ma INotifyDataErrorInfo
, który został wprowadzony do dokładnie tego celu, ale WPF tego nie robi. W jaki sposób mam nadal moją logikę walidacji wydedukowaną deterministycznie i asynchronicznie?
Wydaje się, że jest to po prostu niemożliwe, więc muszę iść inną drogą, jak opisano tutaj: http://stackoverflow.com/questions/7293277/create-a-visualtree-off-of -a-control-template-in-code – bitbonk
Należy zauważyć, że WPF 4.5 wprowadził obsługę podobną do Silverlight dla INotifyDataErrorInfo, tutaj na przykład: http://anthymecaillard.wordpress.com/2012/03/26/wpf-4-5-validation -asynchrone/ – GrahamMc