#wpf #prism
#wpf #призма
Вопрос:
Можно ли создавать представления в разных потоках и добавлять их в область основного потока пользовательского интерфейса?
Я продвинулся настолько далеко, насколько мог, но Prism заблокировала меня, пытаясь установить свойство RegionManager attached в представлении, но это вызывается из основного потока пользовательского интерфейса, и поэтому вызов завершается неудачно.
Обновить
Регион является адаптером WindowRegionAdapter, поэтому представления размещаются в разных окнах.
Комментарии:
1. Зачем вам вообще это делать? Я спрашиваю, потому что во многих случаях есть способ обойти это.
2. Я хочу сделать это, чтобы я мог показывать модальный диалог для данного представления и продолжать работать со всеми другими представлениями
Ответ №1:
Нет, как правило, это невозможно в WPF. За исключением замороженных замораживаемых файлов, все ваши элементы пользовательского интерфейса должны быть созданы в потоке пользовательского интерфейса (т. Е. В потоке, в котором было создано окно, в которое вы хотите поместить вышеупомянутые элементы пользовательского интерфейса).
Вы упомянули, что хотите сделать это, потому что хотите отобразить модальный диалог для данного представления и при этом работать со всеми остальными представлениями. Вы можете добиться того же эффекта, отображая немодальное окно и заставляя его оставаться сверху и отключать представление, которое должно стать недоступным для редактирования.
Комментарии:
1. Возможно иметь несколько потоков пользовательского интерфейса, см.: eprystupa.wordpress.com/2008/07/28 /…
2. Да, но не в одном окне, как я уже сказал: все ваши элементы пользовательского интерфейса должны быть созданы в потоке, в котором было создано окно верхнего уровня. Окно верхнего уровня — это окно, в которое вы хотите поместить элементы пользовательского интерфейса.
3. Извините, я должен был быть более конкретным, я обновил вопрос. Я использую WindowRegionAdapter, чтобы представления размещались в отдельных окнах в одном регионе