Есть ли недостатки в использовании ElementHost для размещения пользовательского элемента управления WPF в приложении Winform?

StackOverflow https://stackoverflow.com/questions/2269410

Вопрос

Интересно, есть ли какие-либо недостатки в использовании ЭлементХост разместить WPF UserControl в приложении Winform?

Я спрашиваю, потому что в целом мне кажется, что создание нового приложения WPF с базовым интерфейсом, которое выглядит прилично, занимает слишком много времени.Прилично в том смысле, что если я создам новое приложение Winforms и добавлю в него некоторые элементы управления, я получу базовый интерфейс, который выглядит и ведет себя аналогично многим другим приложениям, но не выглядит простым.Если я делаю то же самое с приложением WPF, я не чувствую, что достигаю тех же результатов, в конечном итоге я получаю «простое» приложение с белым фоном, если только я не поменяю роль на дизайнера и не потрачу дополнительное время, чтобы оно выглядело определенным образом. способ.

Однако бывают случаи, когда мне предпочтителен WPF из-за относительной простоты создания стилизованного интерфейса.Рассмотрим элемент управления видеоплеером;в WPF я могу создать что-то, что выглядит очень красиво и индивидуально, но требует гораздо меньше времени и усилий, чем элемент управления Winforms.В этих случаях мне имеет смысл использовать WPF, поскольку в конечном итоге я потрачу меньше времени, чем на переопределение OnPaint :-).

Я понимаю, что использую много субъективных терминов, но это моя аргументация в пользу первоначального вопроса.

Обновлять:

Просто чтобы прояснить мой пример «управления видеоплеером».WPF не только дает мне возможность MediaElement для воспроизведения, но если я хочу сказать, наложите кнопку «Воспроизвести» на видео, когда оно приостановлено, или если я хочу, чтобы полупрозрачная полоса «воспроизведение/пауза/остановка/громкость» отображалась, когда мышь находится в определенном месте , WPF делает это намного проще, чем любая альтернатива Winforms.

Редактировать:

Возможно, у меня неправильный параметр конфигурации или что-то в этом роде, но меня также расстраивает то, что раздел «Описание» исчезает, когда я смотрю на WPF vs.Управление Winforms.Еще больше расстраивает то, что нажатие F1 в форме свойства WPF не приводит вас к конкретному свойству/событию, в котором вы находились.

Обновлять:

Кто-нибудь еще?Меня больше беспокоят влияние на производительность и/или ограничения функций, которые могут возникнуть при размещении WPF UserControl в ЭлементХост.Пока что похоже, что это одноразовые издержки среды выполнения, но это все?

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

Решение

Я вижу несколько потенциальных недостатков.

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

Во-вторых, у WPF есть связанная с ним среда выполнения (для отправки событий, управления свойствами зависимостей и т. д. и т. п.), но это единовременные затраты.Если вы используете это для небольшого количества элементов управления, вы платите относительно большие затраты, пропорциональные его использованию.

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

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