Каковы основные преимущества вхождения в WPF?

Можно публично наследоваться:

template<class T>
class gc_vector<T> : public std::vector<T, gc_allocator<T> >
{
    public:
    // You'll have to redeclare all std::vector's constructors here so that
    // they just pass arguments to corresponding constructors of std::vector
};

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

то, что станд.:: вектор имеет невиртуальный деструктор, мог бы привести к неопределенному поведению согласно стандарту C++, если Вы когда-нибудь пытаетесь удалить переменную производного класса через указатель на переменную базового класса.

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

, Если Вы никогда не выделяете это переменные класса на "куче" (и это типично для выделения векторных переменных на стеке и как члены других классов) невиртуальная проблема деструктора не влияет на Вас.

9
задан JL. 7 October 2009 в 20:00
поделиться

4 ответа

Во-первых:

WPF на 100% не зависит от браузера, потому что WPF не работает в браузере.

XBAP (теперь не рекомендуется) и Silverlight работают в браузере, но оба они подмножества WPF.

Второе:

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

Привязка данных в WPF отличается, но лучше, IMO.

Итог: XAML и его сложности - большая кривая обучения, а WPF и XAML во многом идут рука об руку. Но как только вы поймете основы и сможете начать создавать с его помощью базовый графический интерфейс, вы больше никогда не захотите использовать WinForms.

Что касается плюсов и минусов, я бы сказал, что единственный реальный минус WPF - это большая кривая обучения. Он может делать все, что WinForms, из файла. NET, и его проще использовать (если вы это понимаете), чем WinForms. Единственное место, где этого может "не хватать", - это прямая манипуляция GDI +, но вы, вероятно, захотите по возможности избежать этого. Если это необходимо в проекте WPF, просто создайте элемент управления WinForms и разместите его в WPF. Не самое элегантное решение, но оно справится со своей задачей.

12
ответ дан 4 December 2019 в 09:37
поделиться

Если вы занимаетесь разработкой в ​​браузере, вы, вероятно, захотите использовать Silverlight. Он похож на WPF, но не зависит от браузера и пользуется большим спросом с точки зрения использования, а также привлекает большое внимание со стороны Microsoft. (Например, новые службы RIA довольно хороши для бизнес-приложений.)

И WPF, и Silverlight предоставляют многие из тех же преимуществ по сравнению со старыми технологиями разработки пользовательского интерфейса, такими как Windows Forms.

  • Привязка данных в WPF и Silverlight очень мощный и гибкий. Это может как ускорить разработку, так и обеспечить уровень безопасности, который было трудно создать раньше.
  • Разработка пользовательского интерфейса, хотя и отличается, но гораздо более гибкая. Отделение представления от поведения в WPF и Silverlight позволяет очень легко и очень быстро создать очень настраиваемый код пользовательского интерфейса.
4
ответ дан 4 December 2019 в 09:37
поделиться

У меня есть реальный опыт работы с WPF, но не с WinForms. Я использую WPF уже 8 месяцев, и мне весело, легко научиться, но трудно освоить. Привязка, команды и стили, которые являются основными функциями WPF IMO, действительно просты в изучении и использовании. Я знаю, что в WinForms не было команд и стиля, привязка была, но, как сказал Рандольфо, все было по-другому.

Также WPF использует DirectX для рисования своей графики, теперь GDI или GDI +, что также дает гораздо больше гибкости для рисования продвинутой 2D-графики или даже 3D-графики. Кроме того, поскольку он находится поверх DirectX, графический процессор используется для рисования всей графики вместо процессора (например, GDI), поэтому в некотором смысле вы

2
ответ дан 4 December 2019 в 09:37
поделиться

Минусы

  1. WPF не так-то просто выучить.

  2. WPF еще молод. В качестве примера: чтобы использовать элемент управления сеткой данных, вам необходимо загрузить неподдерживаемый инструментарий WPF. Silverlight 3 теперь поддерживает сетку данных изначально, и я почти уверен, что в VS 2010 сетка данных будет перенесена в WPF. Но для созревания требуется время.

  3. Как и в случае с любой другой технологией, не всегда доверяйте образцам. Я видел довольно плохой XAML в дикой природе (даже от Microsoft).

Плюсы

  1. Пользовательский интерфейс декларативно выражается как иерархия объектов, представленных в XAML, а не в визуальном конструкторе, который разрешает взаимодействие только через мышь. (Visual Studio и Expression Blend также имеют визуальный конструктор, который работает поверх XAML. )

  2. Объединение элементов управления в панели с гибкой компоновкой и извлечение ресурсов из словарей позволяют создавать согласованные и красивые плавные пользовательские интерфейсы. Вдобавок к этому добавьте богатую поддержку графических элементов, таких как векторные рисунки, цветные градиенты, прозрачность и добавьте к этому миксу анимации, и у вас будут инструменты для создания действительно потрясающего пользовательского опыта (или очень ужасного, если вы не знаете, что вы делают.)

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

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

  5. Модель отрисовки в WPF - это не модель GDI, в которой вызывается метод OnPaint для рисования определенной области окна. Вместо этого вы добавляете элементы в граф сцены (обычно выражаемый в XAML), который затем отображается с помощью DirectX. Во многих отношениях это намного лучшая модель.

Я впечатлен общим дизайном WPF, и, на мой взгляд, дизайнеры WPF - действительно умные люди, которые проделали большую работу. Но работа с WPF по-прежнему может вызывать разочарование либо потому, что вы не нашли «правильного» решения вашей проблемы, либо потому, что некоторые аспекты WPF просто раздражают (например, когда вы хотите настроить крошечную часть встроенного control и внезапно сталкиваются с изменением колоссального шаблона элемента управления)

Как вы, наверное, уже догадались, WPF - это не Silverlight. Скорее Silverlight - это «облегченная» версия WPF в браузере. Поскольку Silverlight несколько менее сложен, на самом деле это очень хорошая отправная точка для знакомства с XAML, если вы не возражаете против написания изолированного приложения браузера вместо настольного приложения.

4
ответ дан 4 December 2019 в 09:37
поделиться
Другие вопросы по тегам:

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