I\'ve recently made an UserControl, which took quite a long time, because I had to work with custom Dependency Properties and so on...
Anyways, it w
If you are adding your own dependency properties, then you will need your own class upon which to define them.
As you want to apply a template to the class, this custom class will have to derive from Control (as UserControl does).
The main benefit of writing your own Control-derived class is that it can have its template redefined for other usage scenarios, either by you within the app, or by other users of the type.
There is very little overhead in using the UserControl class. In fact, if you look at it in Reflector.NET, you'll see that it hardly has any code. Primarily, UserControl just redefines the metadata on some existing dependency properties (such as making the default value of FocusableProperty false.)
Unless you need to redefine the template of the control immediately, you can leave it as a UserControl for now and change it later if needed.