The ControlTemplate defines the control's appearance, which is usually a composite of multiple elements.
If you are defining a control template that is intended to replace the template of an existing control class, then the XAML that you use to define the control template content should match the existing control contract. Otherwise, the control may not function correctly in the UI. For more information, see Customizing the Appearance of an Existing Control by Using a ControlTemplate and Control Styles and Templates.
If you create a new control class that uses a ControlTemplate, you should use the control parts model so that you control will behave correctly when someone replaces the ControlTemplate of your control. For more information, see Creating a New Control by Creating a ControlTemplate.
In Silverlight 2, control templating is entirely done by defining XAML. The API surface of FrameworkTemplate and ControlTemplate is not intended for and is not capable of defining templates for a control by creating a ControlTemplate in code.