Uygulamada özel kontroller, kod düzeyinde uyguladığınız bir şeyken, kullanıcı kontrolleri için XAML'yi kullanabilirsiniz. Özel denetimler WPF denetim tabanı sınıflarından birini genişletir ve kod aracılığıyla ek işlevsellik sağlar, böylece eklenen tüm mantık ve gösterim kodun içinde uygulanmalıdır.
Kullanıcı kontrolü teknik olarak kodun bazı kısımlarında genişletebileceğiniz normal bir içerik kontrolüdür, ancak genellikle diğer kontrolleri içine yerleştirerek genişletilir. Yani Kent'in de belirttiği gibi, UserControl diğer kontrollerin toplamıdır. Bu, bir kullanıcı kontrolü ile yapabileceklerinizi önemli ölçüde sınırlar. Kullanımı daha kolaydır, ancak tam bir özel kontrolden daha sınırlıdır.
Bu denetimlerin çalışma zamanı açısından küçük bir farkı vardır. Bir uygulama oluşturup içine bir UserControl yerleştirirken, kontrol ağacının içinde somut bir UserControl şablonu olacaktır. Yani özel bir düğmenin topal bir örneğini düşünürsek. Bir kullanıcı denetimi kullanıyorsanız <UserControl>
öğenin içine bir düğme eklersiniz . Özel bir denetim kullanırken, denetimin kendisini büyük olasılıkla bir düğmeden türetmeniz gerekir. Fark, mantıksal ağaçta görülebilir.
Özel kontrol benzer bir mantıksal ağaç sağlarken
UserControl şu mantıksal bir ağaç verir:
Sonuçta UserControl sadece biraz genişletebileceğiniz ve içeriği önceden tanımlayabileceğiniz normal bir ContentControl. XAML'den yararlanmak yerine koddaki tüm mantığı ve etkileşimi yapmak zorunda olduğunuz için özel kontrol, uygulama kolaylığı pahasına daha fazla esneklik sağlar.
Tüm bunlardan sonra, Visual Studio şablonlarında çok fazla fark olduğunu düşünmüyorum. Büyük olasılıkla Visual Studio Özel Denetimi yalnızca boş bir özel denetime sahip bir proje oluştururken, Kullanıcı Denetimi projesi boş bir kullanıcı denetimine sahip bir projedir. Daha sonra projeye her türlü öğeyi ekleyebilirsiniz.
Güncelleme
Özel kontrol ve kullanıcı kontrolünü ne zaman kullanacağım hakkındaki düşüncem, bir kullanıcı kontrolü ile bir şey yapabiliyorsanız ve mantıksal ağaçtaki ekstra kontrol öğesi sizi rahatsız etmiyorsa, kullanıcı kontrolünü çok daha kolay olduğu için yarat ve sürdür. Özel denetimi yalnızca kullanıcı denetimini kullanmama nedeniniz varsa kullanın.