首页 > 解决方案 > 如何更改 AdornerLayer 以显示 ValidationError (WPF)

问题描述

我创建了 RangeBase 的后代。在这个后代中,我创建了使用 TextBox 控件的模板。现在,当将无效值输入到 TextBox(包含在模板中)时,我需要验证值(继承的 RangeBase)。
这是我的问题:如果我想验证新的后代控件,只有 TextBox 装饰有验证错误(使用适当的 ControlTemplate) - TextBox 在 Text 属性的绑定中包含适当的验证(   )
但我需要它来装饰我的新控件,作为一个整体(不仅仅是文本框)在此处输入图像描述:。
有没有办法做到这一点?
也许需要更改 AdornerLayer 以便装饰器不会出现在 TextBox 上,而是出现在我的新元素上。

标签: wpfwpf-controlsadorneradornerlayeradornerdecorator

解决方案


您需要将装饰器站点从经过验证的控件移动到主控件(RangeBase 的后代)。为此,您可以简单地使用:

Validation.ValidationAdornerSite="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"

附加属性到文本框。


推荐阅读