【发布时间】:2010-09-13 06:35:21
【问题描述】:
我们正在使用我们的控件的标准方法来报告违反的 BO 规则。这是通过 BO 中的接口 IDataError 完成的,在 XAML 中,控件绑定到 BO 的属性等。这种方法可以正常工作。但是我们需要根据失效错误的类型(或您喜欢的类别)在 UI 中显示 2 种类型的视觉效果。如果它是必填字段,那么我们会显示一个 CueBanner(水印),但对于其他类型,我们会更改控件边框的颜色。在这两种情况下,我们都设置了错误消息的工具类型。
IDataError 的问题在于它不支持区分错误类型的方法/属性。
我能做到这一点的唯一方法是检查错误文本,必填字段文本必须包含关键字“必填”。以下方法感觉不对,但这是我可以确定错误类型然后相应处理的唯一方法。所有必填字段规则必须作为错误文本“必填字段”的一部分。 为了使这一切正常工作,我创建了一个名为 ErrorMessage 的自定义依赖项属性。在我的 ResourceDictionary 中,我有一个 Style.Trigger 用于 Validation.HasError。在那里,我将我的依赖属性值设置为 ErrorContent。现在,当我的依赖属性值更改时,我可以检查文本并将 Validation.SetErrorTemplate(myControl, newErrorTemplate) 设置为模板以适应错误类型。我必须将一些事件连接到控件,例如丢失并获得焦点来管理删除或添加 cueBanner 模板,但整个事情都会起作用。只是我不确定这是最好的方法。
PS。当我设置 ErrorTemplate 时,我在代码中执行此操作,即构建和添加它。有没有办法将 Validation.SetErrorTemplate 指向静态资源,记住我需要在至少 2 种类型之间切换?
请你的想法..
【问题讨论】:
标签: wpf validation xaml styles