3

我定义了一个控件模板,称为 myVal,用于验证 - 然后将其用于样式定位文本框中,其中其 Validation.ErrorTemplate 设置为

现在假设有许多这样的文本框位于视图中,并且使用 TranslateTransform 和 BeginAnimation 滑动。

结果是 ErrorTemplate 中使用的装饰器在视图转换时没有跟随文本框的位置 - 而是保持在起始位置。但是,一旦我设置焦点或鼠标移动等事件,装饰器就会根据文本框正确地重新定位自己。

如何在不改变焦点的情况下让装饰物在转换后显示在正确的位置?有没有办法将验证延迟到过渡之后......或者动画完成后如何“重新验证”属性?我在某处读到了有关调用 invalidatevisual 的信息,但不知道该怎么做。任何帮助深表感谢。

干杯

4

1 回答 1

3

两个想法:

尝试在文本框或文本框组周围添加 AdornerDecorator。这将告诉 WPF 添加另一个图层来渲染装饰器。向文本框添加“更接近”的图层可能会有所帮助。

如果你想告诉装饰层重新渲染自己,那么你可以使用类似下面的代码:

var al = AdornerLayer.GetAdornerLayer(myTextBox);
al.Update();
于 2011-07-11T14:39:58.653 回答