When you create a Silverlight project in Microsoft Visual Studio 2008, the new project creates a class that inherits from UserControl. The UserControl is a logical choice as the base class for a Silverlight-based application because the UserControl meets all the requirements necessary.
Two other primary reasons for creating a control that inherits from UserControl are 1) to separate functionality into smaller, manageable pieces of logic that can be created independently from an application and other controls; 2) to group related controls that can be used more than once in an application.
A UserControl is a composite of existing elements. You add elements to a UserControl by setting the Content property. Since Content is a single UIElement, you typically set it to an element that inherits from the Panel class and populate the Children of the Panel. The Content property is protected so that developers who use your control cannot change its purpose.
It is typical to put a UserControl inside of another UserControl. When you create a UserControl that encapsulates a piece of logic, you will usually place that UserControl as the root element of your Silverlight-based application, which is another UserControl.
Although the UserControl inherits the template property from the Control class, you cannot apply a ControlTemplate to a UserControl. To create a control that uses a ControlTemplate, see Creating a Templatable Control.