2011-01-20 3 views
0

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

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

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

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

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

+0

Существует множество вещей, связанных с репликацией возможностей поверхностной оболочки. можете ли вы более конкретно узнать, на какие части вы ищете помощь? –

+0

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

ответ

0

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

шаги я следовал:

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

Вначале я бы рассмотрел использование Microsoft Prism, в частности пространства имен модульности.

0

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

Я полагаю, что у вас все еще может быть вид «Host», который представляет другое приложение.

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

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

+0

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

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