Вопрос

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

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

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

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

Это вообще возможно?

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top