2013-06-10 4 views
1

Я знаю, что мне нужно создать и добавить элементы в другой элемент в основном потоке пользовательского интерфейса в WPF, и вы можете легко сделать это, когда в другом потоке с помощью Диспетчера.Любой способ программно создавать элементы пользовательского интерфейса из потока пользовательского интерфейса?

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

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

Есть ли способ сделать это?

ответ

1

Я так не думаю; тем не менее, вы можете создать более плавный пользовательский интерфейс, постепенно загружая элементы без полного зависания GUI. Это можно сделать, подписавшись на событие CompositionTarget.Rendering, которое будет вызываться каждый раз при визуализации кадра. Если вы поддерживаете список моделей просмотра (и соответствующих типов управления), которые необходимо добавить, вы можете создать несколько (скажем, пятьдесят) из них и добавить их визуальное дерево внутри обработчика событий. При следующем вызове события вы добавите еще пять и т. Д.

0

Возможно, что вы создаете два потока пользовательского интерфейса. В одном потоке пользовательского интерфейса вы создаете свое окно и показываете какой-то индикатор прогресса (индикатор выполнения) в другом потоке пользовательского интерфейса. Сделайте свое окно видимым, когда вы его создали.

http://eprystupa.wordpress.com/2008/07/28/running-wpf-application-with-multiple-ui-threads/

0

Я рекомендую вам использовать некоторую композитную скороговорку приложения, как примитивы. См. Patterns For Building Composite Applications With WPF. Prism позволяет отделить компоненты ваших приложений, а также загрузить их по требованиям. Также вы можете увидеть: Prism Надеюсь, что это поможет ...

Смежные вопросы