我们如何以与错误类似的方式显示用户警告。唯一的区别是控制例如TextBox需要有一个不同的错误模板,类似于Validation.HasError,需要有一个Validation.HasWarning。
换句话说,并非所有验证问题都是“错误”(至少在我们的应用程序中)。我们希望直观地指出某些事情是警告还是错误。
答案 0 :(得分:3)
我有时需要这个中间立场。与需要Command
而不是CanExecute
或true
的3个值的false
类似。
对于像验证这样运作的警告,我不知道需要整理的所有部分,但我想我知道如何开始。
您需要依赖附加属性和附加行为(附加属性,这些属性可以订阅对象上的事件,并在触发时执行与这些事件相关的操作)。您可能有一个管理ValidationRule
个对象的集合,用于确定是否发出警告,就像Validation
属性一样。您可能有一个名为HasWarning
的名称由样式/模板触发器中可以引用的验证设置或取消设置。
您可以将警告显示为每个控件模板的一部分,或者您可以再次模仿Validation
并附加WarningTemplate
附加属性,用于将警告信息放入AdornerLayer
由于自定义ValidationRule
对象返回ValidationResult
对象,其中ErrorContent
只是一个对象,并且此对象也在ValidationError
对象中公开为{{1毕竟,你也可以使用常规验证。您可以将一个类用作ErrorContent
对象,其ErrorContent
属性为Warning或Error,并绑定到ErrorType
中的<。<}组。
我不确定是否存在ErrorTemplate
会阻止您希望允许的某些操作(例如按钮按下),但可以创建ViewModel上的某种代理来判断{{1 }}