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
.
+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. –