WPF рендерит элементы управления в фоновом режиме - PullRequest
3 голосов
/ 05 октября 2011

У меня есть приложение, которое имеет область просмотра.В области просмотра содержится сетка, которая будет содержать набор элементов управления, таких как изображения, представления списка, сетки данных и текст.

Один вид будет виден одновременно, поскольку существует только одна область просмотра,В настоящее время, когда выполняется действие, чтобы сделать новый вид активным, я визуализирую вид и устанавливаю его в качестве дочернего для области просмотра.Для некоторых представлений рендеринг занимает пару секунд, поэтому здесь есть задержка.

Я хотел бы отобразить все 10 представлений при первой загрузке приложения, а затем просто получить соответствующий вид при вызове.Я не смог этого сделать.Многие из моих элементов вида имеют пропорциональные размеры, сетка использует звезду для размеров строк и столбцов, поэтому кажется, что пока представление не привязано к видимой области, где оно может рассчитать все размеры, которые оно не выполняетлюбой рендеринг.

Например, мои сетки данных все еще мерцают, поскольку он открывает их со всеми столбцами, установленными на ширину 20, а затем привязывает их к правильной ширине.Вы можете визуально заметить это на экране, начальное рисование с узкими столбцами, а затем все они расширяются, чтобы заполнить область сетки данных.

Я хочу сделать все рендеринг в фоновом режиме, а затем, когда он закончится, отобразитьконечный продукт.

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Элемент управления не может выполнить окончательный рендеринг, пока у него нет контейнера. Может быть, попробуйте хостинг просмотров по-другому. Может быть, построить ваши представления в виде страниц и разместить страницы в рамке. Я не гарантирую, что это будет быстрее, но на что-то посмотреть. Не могли бы вы использовать вкладку? Я уверен, что табит повторно использует последний рендеринг или, по крайней мере, фрагменты последнего рендеринга. Оптимизируйте ваши индивидуальные взгляды. GridView обычно быстрее, чем DataGrid, но может не иметь необходимых вам функций. Для таблицы, где мне нужна скорость, я использую GridView и устанавливаю ширину столбцов на основе данных - рендеринг 100 строк и 40 столбцов занимает менее 1,0 секунды, и я помещаю его в таблицу, и если я возвращаюсь на вкладку (после того, как она отображается один раз) за 0,1 секунды. Если в представлении много прокручиваемых данных, попробуйте виртуализацию. Или загрузите несколько кадров в одном столбце / строке, и в каждый момент времени будет виден только один кадр.

0 голосов
/ 05 октября 2011

Вы можете попробовать создать отдельную область просмотра того же размера, что и основная, но которая скрыта за основной, и поместить все свои 10 видов в качестве дочерних для этого, чтобы они отображались с соответствующими размерами, затем при необходимости поменяйте их на основной ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...