Вот сценарий, при котором мне удалось реализовать тренировку для этой проблемы:
У меня есть несколько текстовых полей, которые связаны с документом Excel.Текстовые поля принимают числовое значение.Они установлены, чтобы сделать недействительными ошибки данных в коде xaml.Ошибка данных происходит, если число <1 или ноль.Я поместил AdornerDecorator вокруг текстового поля (чтобы красная рамка недействительности правильно отображалась над текстовым полем).В Excel вы можете изменить все текстовые поля одновременно, но, как обнаружил ОП, если вам удастся сделать недействительными более 144 текстовых полей одновременно, декоратор-декоратор начнет воспроизводиться, смещая положение границ (то же самоеон был спроектирован для исправления в первую очередь). </p>
Я пробовал несколько различных решений, включая аннулирование макета, однако ни одно из них не помогло в ситуации, с которой я столкнулся.Используя Snoop, я обнаружил, что если я обновлю текстовое поле вручную, тогда рекламодатель разместится правильно.Итак, я решил вызвать обновление для макета каждого отдельного текстового поля, в котором нуждался рекламодатель.Я сделал это, прослушивая OnValueUpdated в текстовых полях.Если новое значение, которое он обновлял до полученного, оказалось недействительным, я навязываю «UpdateLayout ()» для текстового поля (я хотел сделать это только для недопустимых значений, поскольку принудительное обновление влияет на производительность, и я не хочуделайте это каждый раз, когда значение меняется).
Таким образом, независимо от количества ячеек, которые я хотел изменить сразу, декоратор декоратора всегда отображался в правильной позиции (за исключением самого последнего текстового поля длябыть оцененным, который, несмотря на все мои усилия, всегда слегка смещен).