(Заранее прошу прощения за длинный пост ... я столько всего хотел сказать ... Надеюсь, это вам поможет.)
Это то, что мы делаем сейчас (перенос приложения Windows Forms с интенсивным использованием пользовательских (GDI +) нарисованных элементов управления в WPF). Фактически, моя роль в команде заключалась в создании этих элементов управления GDI + ... и теперь в создании элементов управления WPF.
Я согласен с Бейджингтоном в том, что сделать ваше приложение полностью 100% WPF с нуля - это правильный путь ... если вы можете убедить сильных мира сего пойти по этому пути. Однако мы сами конвертируем наше приложение Windows Forms на месте, используя преимущества Возможности взаимодействия с WPF. Есть некоторые ограничения, но в целом это был эффективный подход (и не такой разочаровывающий, как я ожидал).
Я бы посоветовал вам взять один из ваших элементов управления GDI + и создать тот же элемент управления в WPF. А затем, когда вы закончите, выбросьте его и повторите попытку. Вы неизменно чему-то научитесь с первого усилия ... и обнаружите, что есть лучший способ сделать это вместо этого. Я бы начал с чего-нибудь небольшого ... настраиваемая кнопка - хорошее место для начала.
Выполнение описанного выше даст вам представление о том, что потребуется для всего остального, что вы хотите сделать.
Одна вещь, о которой я хотел бы вас предупредить, - это кривая обучения WPF, особенно если вы работаете в фоновом режиме Windows Forms ... и особенно если вы собираетесь создавать настраиваемые элементы управления. Как уже упоминал Абэ, это совершенно другой мир. WPF определенно дает много возможностей, но за это приходится платить за изучение того, как их использовать. Абэ упоминает, что пользовательские элементы управления в WPF «не выглядят» и что их «внешний вид» можно обеспечить с помощью ControlTemplate. Это лишь один из многих способов в WPF предоставить настраиваемые элементы пользовательского интерфейса.
Позвольте мне перечислить некоторые из этих дополнительных способов:
- Создайте стиль для существующего элемента управления, используя возможности стилизации WPF.
- Воспользуйтесь преимуществами модели содержимого WPF и / или элементов управления, производных от ContentControl. Это позволяет вам вставлять произвольно выглядящий «контент» в визуальные элементы элемента управления (например, возможно, вставляя произвольную нарисованную форму в середину кнопки).
- Составьте элемент управления из других элементов управления / элементов, используя UserControl.
- Наследник существующего элемента управления / класса в WPF, расширяя его поведение и предоставляя другой набор визуальных элементов по умолчанию.
- Унаследовать от FrameworkElement, создав настраиваемый элемент WPF, переопределив некоторые или все методы MeasureOverride, ArrangeOverride и OnRender.
- И еще .... если вы можете в это поверить.
В Windows Forms это было похоже на то, что вам дали молоток (UserControl) и отвертку (Control). Однако в WPF ... они предоставили вам весь набор инструментов со всеми 100 инструментами. И это одна из причин более сложной, чем обычно, кривой обучения. Однако теперь вы можете взять пилу, которой у вас никогда раньше не было, и использовать ее, чтобы отпилить конец 2х4 вместо того, чтобы использовать молоток и / или отвертку, чтобы попытаться сделать то же самое.
Ресурсы
(Хорошая новость в том, что у нас не хватает ресурсов, чтобы помочь вам.)
- Books
- Programming WPF by Chris Sells & Ian Griffiths (in particular, chapter 18)
- Pro WPF от Мэтью Макдональда (в частности, глава 24)
- WPF Unleashed by Adam Nathan (в частности, глава 16)
- Приложения = Код + Разметка Чарльза Петцольда (в частности, главы 10, 11 и 12)
- Essential WPF Криса Андерсона (в частности, глава 3)
Мои любимые книги - книга Чарльза Петцольда и книга Адама Натана. Однако глава 18 книги «Программирование WPF» от Sells & Griffiths - действительно отличный обзор предмета и, в частности, освещение вопроса: действительно ли мне нужен настраиваемый элемент управления?
- Forums
- The WPF Forum
- StackOverflow
В частности, вот два сообщения, на которые вы захотите взглянуть (один, два).
MSDN
Я согласен с Bijington, что MSDN документация отличная.
Блоги
В одном из двух Сообщения StackOverflow, на которые я ссылаюсь в разделе «Форумы» выше, я указываю на набор блогов в моем списке «обязательно к прочтению». В частности, я бы особо выделил блоги Павана Подила и Кевин Мур. Кевин Мур раньше был менеджером программы WPF для элементов управления WPF, и у него есть хороший набор элементов управления, называемый WPF Bag-o -Уловки, которые полезны, но, что более важно, элементы управления, которым вы можете научиться.
Образцы, образцы и другие образцы
Существует всего тонна образцов. Почти слишком много! Я бы указал на Family.Show (он был создан как сквозной эталонный образец для WPF ), и я бы указал на образцы SDK WPF и, в частности, на примеры настройки элемента управления в этом разделе.
person
cplotts
schedule
08.11.2008