Używamy standardowej metody dla naszych kontroli do zgłaszania złamanych reguł BO. Odbywa się to poprzez interfejs IDataError w naszych BO iw XAML kontrola jest związana z własnością BO itp. To podejście działa OK. Musimy jednak pokazać 2 typy wizualizacji w interfejsie użytkownika w zależności od typu (lub kategorii, jeśli chcesz) błędu unieważnienia. Jeśli jest to wymagane pole, wyświetlamy CueBanner (znak wodny), ale w przypadku innych typów zmienimy kolor kontrolki. W obu scenariuszach ustawiamy typ narzędzia komunikatu o błędzie.Czy to jest szalony sposób obsługi wielu typów sprawdzania poprawności za pomocą IDataError i WPF?
Problem z IDataError polega na tym, że nie obsługuje metody/właściwości w celu rozróżnienia typów błędów.
Jedyny sposób, w jaki mogę to zrobić, poprzez sprawdzenie tekstu błędu, wymagane pole tekstowe musi zawierać słowo kluczowe "wymagane". Poniższe podejście nie jest właściwe, ale jest to jedyny sposób, w jaki mogę określić typ błędu, a następnie odpowiednio go rozwiązać. Wszystkie wymagane reguły pola muszą być częścią tekstu błędu "wymagane pole". Aby to wszystko działało, utworzyłem niestandardową właściwość zależności o nazwie ErrorMessage. W moim ResourceDictionary mam Style.Trigger dla Validation.HasError. Tam ustawiłem wartość właściwości zależności na ErrorContent. Teraz, gdy zmieniają się wartości właściwości zależności, mogę sprawdzić tekst i ustawić Validation.SetErrorTemplate (myControl, newErrorTemplate) na szablon, aby dopasować go do typu błędu. Muszę podłączyć kilka zdarzeń do kontroli, takich jak utracone i skupić się na usuwaniu lub dodawaniu szablonu cueBanner, ale wszystko będzie działać. Po prostu nie jestem pewien, czy to najlepszy sposób na zrobienie tego.
PS. Kiedy ustawiam ErrorTemplate robię to w kodzie, to buduję i dodaje. Czy istnieje sposób, aby wskazać Validation.SetErrorTemplate do statycznego zasobu pamiętając, że muszę przełączać się między co najmniej 2 typy?
Twoje myśli proszę ..
Nie sądzę, że dodatkowa właściwość jest dostępna z szablonu błędu. DataContext z ErrorTemplate to kolekcja Validation.Errors. –