WPF单独的错误和警告样式

Tah*_*had 6 validation wpf styles

我们如何以与错误类似的方式显示用户警告.唯一的区别是控件,例如TextBox需要有一个不同的错误模板,类似于Validation.HasError,需要有一个Validation.HasWarning.

换句话说,并非所有验证问题都是"错误"(至少在我们的应用程序中).我们希望直观地指出某些事情是警告还是错误.

Joe*_*ant 3

有时我需要中间立场。就像Commands 需要来自CanExecute而不是trueor的 3 个值false

至于像验证一样操作的警告,我不知道需要将所有部分放在一起,但我想我知道如何开始。

您需要依赖附加属性和附加行为(订阅对象上的事件并在事件触发时执行与这些事件相关的操作的附加属性)。您可能有一个ValidationRule对象来管理一组对象,用于确定是否发出警告,就像Validation属性所做的那样。您可能有一个调用HasWarning,通过可以在样式/模板触发器中引用的验证来设置或取消设置。

您可以将警告显示作为每个控件模板的一部分,或者您可以再次模仿Validation并具有一个WarningTemplate附加属性,用于将警告信息放置在AdornerLayer.


由于自定义ValidationRule对象返回一个ValidationResult对象,其中ErrorContent仅仅是一个对象,并且该对象也在对象中公开为ValidationError,因此ErrorContent您毕竟还可以使用常规验证。您可以使用一个类作为ErrorContent具有ErrorType警告或错误属性的对象,并将其绑定到您的ErrorTemplate.

我不确定存在ValidationErrors 是否会阻止您希望允许的某些操作(例如按下按钮),但可以在 ViewModel 上创建某种代理来判断ErrorType.