2010-02-19 16 views
6

Jak możemy wyświetlać ostrzeżenia użytkowników w sposób podobny do błędów. Jedyna różnica polega na tym, że kontrola, np. TextBox musi mieć inny szablon błędu i podobne do Validation.HasError musi być Validation.HasWarning.WPF Oddzielne style błędów i ostrzeżeń

Innymi słowy, nie wszystkie problemy z weryfikacją to "błędy" (przynajmniej w naszej aplikacji). Chcemy wizualnie wskazać, czy coś jest ostrzeżeniem, czy błędem.

Odpowiedz

3

Czasem potrzebuję tego środkowego podłoża. Podobnie jak Command, które wymagają 3 wartości z CanExecute zamiast true lub false.

Jeśli chodzi o ostrzeżenia, które działają jak sprawdzanie poprawności, nie znam wszystkich elementów, które należałoby zebrać, ale myślę, że wiem, jak by zacząć.

Będziesz musiał polegać na załączonych właściwościach i dołączonych zachowaniach (załączonych właściwościach, które subskrybują zdarzenia na obiekcie i wykonują operacje związane z tymi zdarzeniami, gdy są uruchamiane). Być może istnieje taki, który zarządza kolekcją obiektów, których należy użyć do określenia, czy ostrzeżenie zostanie wydane, czy nie, podobnie jak właściwości Validation. Możesz mieć jeden o nazwie HasWarning, który zostanie ustawiony lub anulowany przez walidację, do której można odwoływać się w wyzwalaczach stylu/szablonów.

Można zrobić część wyświetlacza ostrzeżenie szablonu każdej kontroli, albo ty może ponownie naśladować Validation i mają WarningTemplate załączony właściwość, która służy do umieszczenia ostrzeżenia informacje w AdornerLayer.


Od zwyczaju ValidationRule obiekty zwracają ValidationResult obiekt, w którym ErrorContent jest po prostu obiektem, a cel ten jest również wystawiony w obiektach ValidationError jak ErrorContent, może również być w stanie korzystać z regularnego sprawdzania poprawności po wszystkim. Możliwe, że możesz użyć klasy jako obiektu ErrorContent, który ma właściwość Ostrzeżenie lub Błąd o wartości ErrorType i powiązać z nią w swoim ErrorTemplate.

Nie jestem pewien, czy obecność obecnych ValidationError uniemożliwiłaby pewne operacje (takie jak naciśnięcia przycisków), na które chciałbyś zezwolić, ale można utworzyć coś w rodzaju proxy na ViewModel, który oceni ErrorType.

+0

+1 dla obserwacji, że "ErrorContent" jest obiektem, a nie łańcuchem. Jest to bardzo prosty sposób na osiągnięcie tego. Po prostu tworzysz klasę wiadomości z podklasami błędów, ostrzeżeń i informacji oraz 'DataTemplate' dla każdego typu. –

Powiązane problemy