Размещение приложения WPF / Surface в приложении WPF / Surface - PullRequest
0 голосов
/ 20 января 2011

Я пытаюсь создать родительское приложение WPF / Surface, в котором будет размещено несколько приложений WPF / Surface.Я ищу несколько советов о том, как реализовать такую ​​функциональность.Читал http://msdn.microsoft.com/en-us/library/ms742522.aspx, но он говорит о размещении содержимого Win32 в WPF и наоборот.

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

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

Кроме того, поскольку существует способ гарантировать, что память процесса главного окна не захламлена инициированным дочерним процессом.

Редактировать: хост-приложение будет запускать различные приложения в зависимости от того, что выберет пользователь,Можно сказать, что это как средство запуска приложений, созданное на основе WPF / Surface touch SDK.Теперь, когда приложение запущено, программа запуска запускается в фоновом режиме (за исключением показа маленькой кнопки, чтобы через некоторое время снова выдвинуть ее вперед), и когда пользователь завершает работу, программа запуска текущего приложения снова возвращается на передний план.Единственное взаимодействие, которое я считаю необходимым, это знать, что запущенное приложение завершено, или вызывать приложения в ограниченной области экрана.Если кто-то видел панель запуска приложений Microsoft Surface, даже при запуске приложения есть угловые кнопки, которые выводят панель запуска приложений на передний план.

Ответы [ 3 ]

0 голосов
/ 20 января 2011

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

Полагаю, у вас все еще может быть представление под названием "Host", которое представляет другое приложение.

Конечно, в WPF нет концепции MDI, но вы можете открыть несколько немодальных окон.

Это действительно зависит от того, что вы подразумеваете под «хостингом».Должно ли главное окно каким-то образом обрабатывать и / или взаимодействовать с другими приложениями или это просто стартовая панель для других приложений?

0 голосов
/ 20 июля 2011

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

Шаги, за которыми я следовал:

  1. Основное приложение запуска будет работать в режиме киоска, то есть всегда сверху / без возможности закрытия при захвате события закрытия / Нет экземпляра на панели задач / нетстрока заголовка / убийство explorer.exe / скрытие панели задач.
  2. Модуль запуска заполняет горизонтальный список (данные, настроенные для пользовательского интерфейса), который позволяет занимать основную центральную область экрана и может быть прокручен в любом случае.
  3. Когда пользователь выбирает элемент в списке, происходит событие щелчка / касания, запускается отдельный процесс с скрытой видимостью окна запуска и созданием маленькой кнопки (в основном это окно с просто кнопкой внутри и размером, установленным на высоту / ширину кнопки).в любом углу экрана с опцией «всегда наверху».
  4. Функциональность кнопки заключается в том, чтобы минимизировать текущее рабочее приложение и вернуть видимость средства запуска обратно в видимое положение и установить фокус на это окно.
  5. Поскольку процесс запускается программой запуска, я перехватываю событие close для запускаd окно, чтобы узнать, пользователь закрыл приложение, а затем снова вывести панель запуска обратно.
0 голосов
/ 20 января 2011

Я бы сначала посмотрел на использование Microsoft Prism , в частности пространства имен Modularity.

...