ในทางปฏิบัติการควบคุมแบบกำหนดเองเป็นสิ่งที่คุณใช้กับระดับรหัสในขณะที่คุณสามารถใช้ XAML สำหรับการควบคุมผู้ใช้ คอนโทรลแบบกำหนดเองขยายคลาสฐานการควบคุม WPF หนึ่งคลาสและจัดเตรียมฟังก์ชันเพิ่มเติมผ่านโค้ดดังนั้นตรรกะและการแทนค่าที่เพิ่มทั้งหมดต้องถูกนำมาใช้ภายในโค้ด
การควบคุมผู้ใช้เป็นเทคนิคการควบคุมเนื้อหาปกติซึ่งคุณสามารถขยายในบางส่วนในรหัส แต่โดยปกติจะขยายโดยการวางการควบคุมอื่น ๆ ภายใน ดังนั้นอย่างที่เคนท์กล่าวถึง UserControl เป็นการรวมตัวควบคุมอื่น ๆ นี่เป็นการ จำกัด สิ่งที่คุณสามารถทำได้กับการควบคุมผู้ใช้อย่างมาก ใช้งานง่ายกว่า แต่มีข้อ จำกัด มากกว่าการควบคุมแบบกำหนดเองเต็มรูปแบบ
ตัวควบคุมเหล่านี้มีความแตกต่างเล็กน้อยจากมุมมองรันไทม์ เมื่อสร้างแอปพลิเคชันและวาง UserControl ลงในแผนผังควบคุมจะมีเทมเพลต UserControl ที่เป็นรูปธรรมอยู่ด้านใน ดังนั้นถ้าเราพิจารณาตัวอย่างที่อ่อนแอของปุ่มพิเศษ หากคุณใช้การควบคุมผู้ใช้คุณจะต้องเพิ่มปุ่มภายใน<UserControl>
องค์ประกอบ เมื่อใช้การควบคุมที่กำหนดเองคุณจะได้รับการควบคุมตัวเองจากปุ่มส่วนใหญ่ ความแตกต่างจะสามารถมองเห็นได้ในต้นไม้ตรรกะ
ในขณะที่การควบคุมที่กำหนดเองจะให้ต้นไม้ตรรกะคล้ายกับ
UserControl จะให้ต้นไม้ตรรกะของ
ดังนั้นในตอนท้าย UserControl เป็นเพียง ContentControl ปกติซึ่งคุณสามารถขยายได้เล็กน้อยและคุณสามารถกำหนดเนื้อหาล่วงหน้าได้ การควบคุมแบบกำหนดเองให้ความยืดหยุ่นที่มากขึ้นในราคาที่ติดตั้งได้ง่ายเนื่องจากคุณต้องทำทุกตรรกะและการโต้ตอบในโค้ดแทนการใช้ประโยชน์จาก XAML
ถึงแม้ว่าทั้งหมดนี้ฉันไม่คิดว่ามีความแตกต่างกันมากในเทมเพลต Visual Studio ส่วนใหญ่แล้ว Visual Studio Custom Control เพิ่งสร้างโครงการที่มีการควบคุมแบบกำหนดเองที่ว่างเปล่าในขณะที่โครงการการควบคุมผู้ใช้เป็นโครงการที่มีการควบคุมผู้ใช้ที่ว่างเปล่า คุณสามารถเพิ่มรายการประเภทใดก็ได้ในโครงการในภายหลัง
ปรับปรุง
และความคิดเห็นของฉันเกี่ยวกับเวลาที่จะใช้การควบคุมแบบกำหนดเองและการควบคุมผู้ใช้คือถ้าคุณสามารถทำบางสิ่งได้ด้วยการควบคุมผู้ใช้และองค์ประกอบการควบคุมพิเศษในทรีแบบลอจิคัลไม่รบกวนคุณให้ใช้การควบคุมผู้ใช้ สร้างและบำรุงรักษา ใช้การควบคุมแบบกำหนดเองก็ต่อเมื่อคุณมีเหตุผลที่จะไม่ใช้การควบคุมผู้ใช้