2010-02-19 2 views
6

사용자 경고를 오류와 비슷한 방식으로 표시하려면 어떻게해야합니까? 유일한 차이점은 예를 들어, TextBox에는 다른 오류 템플릿이 있어야하며 Validation.HasError와 유사하게 Validation.HasWarning이 있어야합니다.WPF 별도의 오류 및 경고 스타일

즉, 모든 유효성 검사 문제가 "오류"(적어도 우리의 응용 프로그램에서는)가 아닙니다. 우리는 어떤 것이 경고인지 오류인지를 시각적으로 나타내려고합니다.

답변

3

때때로 나는 그 중간계에 대한 필요성을 느낍니다. true 또는 false 대신 CanExecute에서 3 개의 값을 필요로하는 Command과 같습니다.

유효성 검사와 마찬가지로 작동하는 경고에 관해서는 함께 정리해야 할 모든 조각을 알 수는 없지만 어떻게 시작해야하는지 알 것 같습니다.

첨부 된 속성 및 연결된 동작 (개체의 이벤트에 가입하고 해당 이벤트와 관련된 작업을 수행하는 첨부 된 속성)에 의존해야합니다. Validation 속성과 마찬가지로 경고가 발생하는지 여부를 확인하는 데 사용할 ValidationRule 개체 컬렉션을 관리하는 개체가있을 수 있습니다. HasWarning이라는 스타일이 스타일/템플릿 트리거에서 참조 할 수있는 유효성 검사에 의해 설정되거나 설정 해제 될 수 있습니다.

경고 표시를 각 컨트롤 템플릿의 일부로 만들거나 Validation을 다시 모방하고 WarningTemplate 첨부 속성을 사용하여 경고 정보를 AdornerLayer에 배치 할 수 있습니다.


사용자 정의 때문에 ValidationRule 객체는 ErrorContent 단순히 객체 된 ValidationResult 개체를 반환하고,이 객체는 ErrorContentValidationError 객체에 노출되어, 당신은 또한 결국 일반 유효성 검사를 사용할 수 있습니다. 당신은 객체를 ErrorType이라는 경고 또는 오류 속성을 가지고 ErrorTemplate에 바인딩 할 수 있습니다.

ValidationError을 사용하면 허용 할 특정 작업 (예 : 버튼 누름)이 허용되지 않을지 모르겠지만 을 판단하는 ViewModel의 일종의 프록시를 만들 수 있습니다.

+0

+1 'ErrorContent'는 문자열이 아닌 객체입니다. 이것은 이것을 달성하는 아주 간단한 방법입니다. 오류, 경고 및 정보 하위 클래스가있는 메시지 클래스와 각 유형의 'DataTemplate'클래스를 만들면됩니다. –