От новичка до гуру: Курсы программирования на CyberDuff

Есть ли подводные камни при добавлении окна WPF в приложение Winforms?

Я добавил в свое решение проект WPF, который содержал один проект - Winforms. Затем я сослался на проект WPF из проекта Winforms и добавил соответствующие ссылки. Затем я создал новое окно WPF в исходном проекте Winforms и открыл его из обработчика событий кнопки. Все работало нормально.

ТЕМ НЕ МЕНИЕ,

Раньше при поиске аналогичного решения я не помню, чтобы упоминалось это решение (просто добавление другого проекта к решению), поэтому мне было интересно: есть ли подводные камни при добавлении окна WPF в приложение Winforms?

ИЗМЕНИТЬ

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

27.04.2020

  • Проект WinForms становится DpiAware (SystemAware). Если это еще не было DpiAware, то есть. Кроме этого, не так уж и много. Если вы не говорите добавление окна WPF, вы имеете в виду встроить его. Если это так, я не знаю, я никогда этого не делал. 28.04.2020
  • @Jimi Спасибо. (И я не имею в виду встраивание. Это может создать больше проблем.) 28.04.2020
  • Этот комментарий, конечно, относится к простому сосуществованию. Сотрудничество / взаимодействие может нуждаться в особом подходе, в зависимости от ролей. DataBinding работает по-другому, ObservableCollection, хотя он может использоваться в WinForms, не имеет такой же поддержки со стороны Framework, вместо этого обычно используются BindingList и BindingSource, поэтому вам может потребоваться прокси для включения двусторонней привязки данных, если это необходимо. Основные графические объекты (Image, Bitmap vs. BitmapSource, BitmapImage, WriteableBitmap), хотя и легко конвертируются, напрямую не совместимы и т. Д. 28.04.2020
  • Что касается DataBindings, объекты, реализующие INotifyPropertyChanged, совместимы и полностью функциональны в обеих платформах. Класс BindingSource очень хорошо работает с такими объектами, когда DataTable недоступен. 28.04.2020

Ответы:


1

Единственная очевидная ошибка заключается в том, что окно WPF не получит ввода с клавиатуры, если вы не вызовете _ 1_ перед тем, как открыть его в приложении Windows Forms:

Window1 window = new Window1();
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(window);
window.Show();
29.04.2020
  • Я только что попробовал это в своей тестовой программе, и добавленное мной текстовое поле принимает ввод с клавиатуры без вашего кода. В каком случае этот код понадобится? Хорошо, теперь я вижу, что, когда он открывается с помощью Show вместо ShowDialog, ему это понадобится. 29.04.2020
  • @ispiro: Да, это применимо к немодальным окнам, как указано в документах, на которые я ссылался. 29.04.2020
  • Новые материалы

    Представляем Narwhal Technologies (Nrwl)
    6 декабря 2016 г. Маунтин-Вью, Калифорния С тех пор, как Виктор Савкин и я (Джефф Кросс) присоединились к команде Angular в Google на заре Angular 1, Angular продемонстрировал феноменальный..

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

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