На практиці користувацькі елементи керування - це те, що ви реалізуєте на рівні коду, тоді як ви можете використовувати XAML для керування користувачами. Спеціальні елементи керування розширюють один із базових класів управління WPF та забезпечують додаткову функціональність за допомогою коду, тому вся додана логіка та представлення повинні бути реалізовані всередині коду.
Користувальницьке управління технічно є звичайним контролем вмісту, яке ви можете розширити в деяких частинах коду, але зазвичай воно розширюється, розміщуючи в ньому інші елементи управління. Так, як Кент згадував, UserControl - це сукупність інших елементів управління. Це значно обмежує те, що ви можете зробити з контролем користувача. Це простіше у використанні, але більш обмежено, ніж повний спеціальний контроль.
Ці елементи керування мають невелику різницю з точки зору виконання. Під час створення програми та розміщення в ній UserControl дерево керування всередині нього матиме конкретний шаблон UserControl. Тож якщо ми розглянемо кульгавий приклад спеціалізованої кнопки. Якщо ви використовували керування користувачем, ви додали б кнопку всередині <UserControl>
елемента. Якщо ви користуєтеся спеціальним елементом керування, то ви отримаєте саме управління з кнопки. Різниця була б помітна в логічному дереві.
Хоча користувацький контроль забезпечить логічне дерево, подібне до
UserControl дасть логічне дерево
Отже, врешті-решт, UserControl - це просто звичайний ContentControl, який ви можете трохи розширити і для якого ви можете заздалегідь визначити вміст. Спеціальний контроль забезпечує більшу гнучкість за ціною простоти реалізації, оскільки ви повинні виконувати всю логіку та взаємодію в коді, а не мати перевагу XAML.
Хоча після всього цього, я не думаю, що в шаблонах Visual Studio немає такої різниці. Швидше за все, Visual Studio Custom Control просто створює проект із порожнім спеціальним керуванням, тоді як проект «User Control» - це проект із порожнім контролем користувача. Пізніше ви можете додати будь-які елементи до проекту.
Оновлення
І моя думка щодо використання користувальницького управління та контролю за користувачем полягає в тому, що якщо ви можете зробити щось з керуванням користувача, а додатковий елемент управління в логічному дереві вас не турбує, використовуйте керування користувачами, оскільки вони набагато простіше створювати та підтримувати. Використовуйте спеціальний елемент керування, лише якщо у вас є причина не використовувати керування користувачем.