WPF - рекламодатель остается в исходном положении после смены вида - PullRequest
3 голосов
/ 11 июля 2011

У меня определен шаблон элемента управления, назовите его myVal, который используется для проверки - это затем используется, например, в текстовом поле таргетинга стиля, где его Validation.ErrorTemplate устанавливается как

Теперь скажем, что есть несколько таких текстовых полей, которые располагаются в представлении, и которые используются в TranslateTransform и BeginAnimation.

В результате этого рекламодатель, используемый в шаблоне ErrorTemplate, не следует позиции текстовых полей при переходах вида - вместо этого они остаются в начальной позиции. Тем не менее, украшатели правильно позиционируют себя относительно текстовых полей, как только я установлю фокус или такие события, как движение мыши.

Как я могу заставить украшения показываться в правильном положении после трансформации, не меняя фокус? Есть ли способ отложить проверку до окончания перехода ... или как я могу "повторно проверить" свойства после завершения анимации? Я где-то читал о том, как называть инвалида визуальным, но не вижу, как я это сделаю. Любая помощь очень ценится.

Приветствия

1 Ответ

3 голосов
/ 11 июля 2011

Две идеи:

Попробуйте добавить AdornerDecorator вокруг текстового поля или вокруг группы текстовых полей.Это скажет WPF добавить еще один слой для рендеринга украшателей.Добавление слоя «ближе» к текстовым полям может помочь.

Если вы хотите сказать слою adorner для повторной визуализации, то вы можете использовать что-то вроде следующего кода:

var al = AdornerLayer.GetAdornerLayer(myTextBox);
al.Update();
...