У меня есть окно с ItemsControl, которое размещает символы на карте.Символы довольно сложные (каждый состоит из нескольких пользовательских элементов управления).
У меня есть несколько сценариев, и каждый сценарий размещает уникальный набор символов на карте.Существует раскрывающееся меню, которое позволяет пользователю переключаться между сценариями.
Если пользователь переключается на сценарий A (который имеет 22 символа), вся карта обновляется за один снимок.
Если пользователь переключается на сценарий B (который содержит 39 символов), картапоявляется, чтобы обновить дважды.Некоторые части символов прорисовываются, затем через короткий момент остальные части символов прорисовываются.В конце символы отображаются правильно, но двухэтапное обновление очень неудобно и выглядит непрофессионально.(Это было бы, как если бы вы пытались разместить кучу машин на дорожной карте, и вместо того, чтобы просто появляться автомобили, сначала появлялись кузовы автомобилей, а через мгновение появились колеса и зеркала.)
Пытаясь отладить это, я подумал о том, что отличается между двумя сценариями, и на самом деле единственное, о чем я мог подумать, это то, что количество символов было разным.(Различия в отдельных атрибутах казались довольно случайными.) Итак, я провел тест только с 22 первыми символами Сценария B. Карта обновилась за один раз.Я увеличил количество символов несколько раз, и карта все еще обновлялась за один раз.Когда я набрал 38 символов, карта снова обновилась в два этапа.На всякий случай было что-то странное в последних двух символах, я попытался пропустить первые два, а затем захватить оставшиеся 37, но карта обновилась одним выстрелом снова.Наконец, я попытался пропустить первый символ, а затем захватить оставшиеся 38. Теперь он вернулся к обновлению карты в два этапа.
Итог: если ItemsControl пытается отобразить 38 или более символов одновременно, это происходитв два этапа, иначе это происходит в один.Мне бы хотелось, чтобы карта обновлялась за один этап независимо от количества символов.
Из того, что я читал о виртуализации WPF, я не верю, что это поведение квалифицируется как виртуализация, поскольку после рендерингазавершено, ни один из символов не является скрытым или за кадром.Мой монитор достаточно большой, чтобы не было активных полос прокрутки.
Итак, я полностью озадачен тем, что я испытываю здесь.Любые идеи приветствуются.
Обновление
Я попытался установить Видимость на Скрытый, затем выполнить обновление, затем установить Видимость обратно на Видимый.Не имеет никакого значенияКарта по-прежнему обновляется поэтапно.(Я также попробовал «Свернуть» вместо «Скрытый», но все равно не сработало.)