Возможно ли размещать представления из нескольких потоков в одном регионе

#wpf #prism

#wpf #призма

Вопрос:

Можно ли создавать представления в разных потоках и добавлять их в область основного потока пользовательского интерфейса?

Я продвинулся настолько далеко, насколько мог, но Prism заблокировала меня, пытаясь установить свойство RegionManager attached в представлении, но это вызывается из основного потока пользовательского интерфейса, и поэтому вызов завершается неудачно.

Обновить

Регион является адаптером WindowRegionAdapter, поэтому представления размещаются в разных окнах.

Комментарии:

1. Зачем вам вообще это делать? Я спрашиваю, потому что во многих случаях есть способ обойти это.

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

Ответ №1:

Нет, как правило, это невозможно в WPF. За исключением замороженных замораживаемых файлов, все ваши элементы пользовательского интерфейса должны быть созданы в потоке пользовательского интерфейса (т. Е. В потоке, в котором было создано окно, в которое вы хотите поместить вышеупомянутые элементы пользовательского интерфейса).

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

Комментарии:

1. Возможно иметь несколько потоков пользовательского интерфейса, см.: eprystupa.wordpress.com/2008/07/28 /…

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

3. Извините, я должен был быть более конкретным, я обновил вопрос. Я использую WindowRegionAdapter, чтобы представления размещались в отдельных окнах в одном регионе