WPF Interop & Dialogs - PullRequest
       10

WPF Interop & Dialogs

0 голосов
/ 16 июня 2009

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

Я бы хотел сделать диалог в WPF. Похоже, что мне нужно будет выполнить UserControl для фактического контента, а затем разместить этот контент с помощью формы WinForms с ElementHost (поскольку UserControl не имеет метода ShowDialog ()).

И вот где мой вопрос. Как это работает? Насколько я могу судить, WPC UserControl даже не имеет свойства DialogResult (что имеет смысл, учитывая, что у него нет метода ShowDialog ()) - мне кажется, что мне нужен элемент управления WPF Window - а у меня нет думаю, что я могу использовать это в этом случае.

Борьба с основным потоком и настройкой вещей здесь. Может ли кто-нибудь зажечь свет?

Возможно ли это вообще?

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Вы можете открыть окно WPF из приложения WinForms.

Просто создайте окно и позвоните ShowDialog(). CLR загрузит платформу WPF и откроет окно.

0 голосов
/ 16 июня 2009

Если вы хотите, чтобы ваше приложение взаимодействия работало в основном как приложение WinForms, то описанный вами подход работает отлично - у меня почти такая же вещь в моих случаях взаимодействия.

WPF поддерживает MessageBoxes (хотя и немного отличную от WinForms версию), и вы можете собрать что-то вместе, используя WPF Windows (расширив его, добавив что-то похожее на DialogResult). Однако предоставляемые элементы управления WPF предполагают, что они пытаются изменить взаимодействия UX, чтобы минимизировать диалоги, особенно модальные.

Чтобы сделать вашу жизнь проще, я бы создал подкласс WinForms Form / ElementHost специально для работы с хостингом содержимого WPF, и в зависимости от того, насколько вы чисты, как ваши "использующие" объявления, оборачивая свое собственное перечисление типа DialogResult, чтобы не нужно включать пространство имен System.Windows.Forms, которое может сделать ваши кодовые компоненты WPF более громоздкими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...