Wpf, призначені для користувача елементи

Хоча призначений для користувача елемент можна побудувати в будь-якому проекті WPF, зазвичай такі елементи розміщуються в спеціально виділеній збірці - бібліотеці класів (DLL). Це дозволяє розділяти роботу з безліччю додатків WPF.

Щоб гарантувати наявність усіх необхідних посилань на збірки і імпорт всіх потрібних просторів імен, при створенні програми в Visual Studio в якості типу проекту слід вибрати Custom Control Library (WPF) (Бібліотека для користувача елементів управління (WPF)). Усередині бібліотеки класів можна створювати скільки завгодно елементів управління.

Як при розробці будь-якої бібліотеки класів, часто варто поміщати як саму бібліотеку класів, так і додаток, що використовує її, в один і той же рішення Visual Studio. Це дозволить легко модифікувати і налагоджувати обидві частини разом.

Перший крок у створенні призначеного для користувача елементу управління - це вибір коректного базового класу для наслідування. Нижче перераховані деякі часто вживані класи для створення користувацьких елементів управління, а на малюнку показано їх розташування в ієрархії елементів:

Це - найнижчий рівень, з яким зазвичай доводиться мати справу при створенні користувальницького елемента. Зазвичай такий підхід вибирається тільки тоді, коли потрібно намалювати його вміст "з нуля" за допомогою перевизначення OnRender () і використання System.Windows.Media.DrawingContext. Це схоже на підхід, де призначений для користувача інтерфейс конструювався на основі об'єктів Visual. Клас FrameworkElement надає лише самий базовий набір властивостей і подій для елементів, які не призначені для взаємодії з користувачем

Цей клас найчастіше служить початковою точкою при побудові елемента управління "з нуля". Це - базовий клас для всіх взаємодіючих з користувачем графічних елементів управління. Клас Control додає властивості для установки фону і переднього плану, а також шрифту і вирівнювання вмісту. Крім того, цей клас поміщає себе в порядок пересування між по клавіші (Властивістю IsTabStop) і отримує повідомлення про подвійному натисканні (через події MouseDoubleClick і PreviewMouseDoubleClick). Але що більш важливо, так це те, що клас Control визначає властивість Templat e, що дозволяє замінювати його зовнішній вигляд з необмеженою гнучкістю

Це - базовий клас для елементів управління, які можуть відображатися як єдине ціле з довільним вмістом. Вміст може бути елементом користувальницького об'єкта, що застосовується в поєднанні з шаблоном. (Вміст встановлюється властивістю Content, а необов'язковий шаблон може бути представлений у властивості ContentTemplate.) Багато елементів управління упаковують специфічний, обмежений тип вмісту (на кшталт рядка тексту в текстовому полі). Оскільки ці елементи управління не підтримують всіх елементів, вони не повинні визначатися як елементи управління з вмістом

Це елемент управління з вмістом, який може бути налаштований з застосуванням поверхні часу проектування. Хоча такий призначений для користувача елемент керування не настільки відрізняється від звичайного елемента управління з вмістом, зазвичай він використовується тоді, коли необхідно швидко повторно застосувати незмінний блок призначеного для користувача інтерфейсу в більш ніж одному вікні (замість створення дійсно окремого елемента управління, який може бути перенесений з однієї програми в інше)

ItemsControl і Selector

ItemsControl - базовий клас для елементів управління, службовців оболонками для списків елементів, але не підтримують вибір позицій, в той час як Selector - більш спеціалізований базовий клас для елементів, що підтримують вибір. Ці класи нечасто застосовуються для створення призначених для користувача елементів управління, оскільки кошти шаблонів даних ListBox, ListView і TreeView забезпечують достатню гнучкість

Базовий клас для елементів управління, що володіють логікою компонування. Елемент з компонуванням може містити в собі безліч дочірніх елементів і розміщувати їх відповідно до певної семантикою компонування. Часто панелі включають приєднані властивості, які можуть бути встановлені в дочірні елементи для того, щоб конфігурувати їх розташування

Це базовий клас для елементів, службовців оболонками для інших елементів і забезпечують графічний ефект або певний засіб. Двома яскравими прикладами можуть служити Border, який малює лінію навколо елемента, і Viewbox, масштабуючий свій вміст динамічно з використанням трансформацій. Серед інших декорацій - класи Chrome, службовці для постачання знайомими рамками і фоном часто використовуваних елементів управління, таких як кнопка

Специфічний клас елемента

Wpf, призначені для користувача елементи

Хоча допускається побудувати спеціальний елемент, який не є елементом управління, більшість призначених для користувача елементів, створюваних в WPF, будуть саме елементами управління. Це означає, що вони зможуть приймати фокус, а також взаємодіяти з одними натисканнями клавіш і діями миші. З цієї причини терміни призначені для користувача елементи і призначені для користувача елементи управління при розробці WPF-додатків часто є взаємозамінними.