Можно ли смешивать WPF и WinForms в приложении?

Почему обсуждается в C ++ FAQ (boldfacing mine):

В C ++ ссылки, не относящиеся к const, могут связываться с lvalues и ссылки const могут связываться с lvalues ​​или rvalues, но нет ничего, что могло бы связываться с неконстантным значением r. Это необходимо для защиты людей от изменения значений временных объектов, которые уничтожаются до того, как их новое значение может быть использовано. Например:

blockquote>
void incr(int& a) { ++a; }
int i = 0;
incr(i);    // i becomes 1
incr(0);    // error: 0 is not an lvalue

Если этот incr (0) был разрешен либо временным, что никто никогда не видел, будет увеличиваться или - намного хуже - значение 0 станет 1 . Последнее звучит глупо, но на ранних компиляторах Fortran на самом деле была ошибка, которая выделяла место памяти для хранения значения 0.

blockquote>

38
задан P a u l 1 February 2009 в 18:18
поделиться

6 ответов

Я полагаю, что существует управление WindowsFormsHost, можно вставить приложения WPF, которые сделают interop назад к коду WinForms:

http://blogs.msdn.com/ivo_manolov/archive/2007/07/26/wpf-win32-interop-part-1-hosting-winforms-controls-in-wpf-windows.aspx

14
ответ дан Dave Markle 2 February 2009 в 04:18
поделиться
  • 1
    That' s право, я думаю, что OP отсутствовал эти -std=c99 переключатель. – Gorpik 11 July 2013 в 21:23

Мы разместили значительно сложные средства управления WPF в существующем приложении LOB WinForms. Это может быть сделано, но у нас действительно были проблемы (некоторые несомненно вызванный крутой кривой обучения). Они, прежде всего, имели отношение к событиям потери фокуса, не будучи запущенным при ожидании, и также проблемы перемещения с помощью клавиатуры.

4
ответ дан Donnelle 2 February 2009 в 04:18
поделиться

Можно также использовать HWNDSource и средства управления HWNDHost для встраивания средств управления WPF в WinForms (или любой Win32, действительно) приложение.

3
ответ дан Andy 2 February 2009 в 04:18
поделиться
  • 1
    Я предполагаю здесь, что пользователь говорит, что хочет распечатать все файлы, существующие в current Directory.. Не в подкаталогах также!! – Vishal K 19 March 2013 в 04:02

Да Вы можете, и Windows Forms в рамках приложения WPF и средства управления WPF в Windows Forms. приложение схемы выражения идей www.novamind.com является успешным соединением этих двух технологий.

2
ответ дан Paul Stovell 2 February 2009 в 04:18
поделиться

При хостинге non-WPF содержания (Быть этим HTML, WinForms или содержание Win32), Вы будете иметь Воздушное пространство проблемы. Это означает, что Вы не можете полностью удобрить компостом содержание WPF с размещенным содержанием. Вы также не можете анимировать его и т.д. существуют некоторые интересные проблемы относительно scrollviewers , посмотрите здесь для получения дополнительной информации и фиксации также.

4
ответ дан Dominic Hopton 2 February 2009 в 04:18
поделиться

Довольно просто разместить элементы управления WPF в приложении WinForms с помощью адаптера ElementHost или элементы управления WinForms в приложении WPF с помощью адаптера WindowsFormsHost. Однако в Интернете не так много ресурсов, показывающих, как сделать ни то, ни другое. В процессе изучения того, как это сделать самому, я быстро обнаружил симметрию, присущую этим двум путям. Я собрал все свои записи в статью, в которой сравнил и противопоставил эти симметрии, используя уникальный подход: статья представляет собой две статьи, написанные бок о бок, в которых подробно сравнивается каждый шаг, начиная с создания пользовательского элемента управления в одной технологии и заканчивая размещением его в приложении в "противоположной" технологии. Моя статья, опубликованная на SimpleTalk.com в августе 2010 года, доступна здесь: Смешивая WPF и WinForms.

Для полноты картины, вот несколько хороших ссылок на MSDN, по одной на каждый путь. На самом деле, демонстрационное решение, сопровождающее мою статью, началось с обеих этих ссылок:

37
ответ дан 27 November 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: