wpf - 如何更改 AdornerLayer 以显示 ValidationError (WPF)
问题描述
我创建了 RangeBase 的后代。在这个后代中,我创建了使用 TextBox 控件的模板。现在,当将无效值输入到 TextBox(包含在模板中)时,我需要验证值(继承的 RangeBase)。
这是我的问题:如果我想验证新的后代控件,只有 TextBox 装饰有验证错误(使用适当的 ControlTemplate) - TextBox 在 Text 属性的绑定中包含适当的验证( )
但我需要它来装饰我的新控件,作为一个整体(不仅仅是文本框):。
有没有办法做到这一点?
也许需要更改 AdornerLayer 以便装饰器不会出现在 TextBox 上,而是出现在我的新元素上。
解决方案
您需要将装饰器站点从经过验证的控件移动到主控件(RangeBase 的后代)。为此,您可以简单地使用:
Validation.ValidationAdornerSite="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
附加属性到文本框。
推荐阅读
- swift - NSPredicate ANY 只返回与字符串列表中第一个元素的关键字匹配的记录
- python - 警告:tensorflow:模型无法序列化为 JSON。忽略...在 `__init__` 中有参数的层必须覆盖 `get_config`
- vb.net - 在 vb .net 中使用 MyPhoneExplorer 发送短信
- angular - Jasmine 的 toHaveBeenCalled 匹配器失败,即使我可以清楚地看到该状态下的模拟输出。该函数被 def 调用
- android - 无法识别的选项:运行 cordova build android 时 --illegal-access=permit
- java - Java/Jackson:为什么序列化日期有一个额外的 04?
- scala - 如何在运行中的 AbstractModule 中注入执行上下文?
- mysql - 关于电晕的挑战作为练习
- azure - 我想撤销组中所有用户的刷新令牌。有人可以检查我的工作吗?
- azure-devops - Azure DevOps 工作流规则