Control templates provide the ultimate control customization mechanism that can be done in XAML alone, with little or no code (code may be needed if value converters are used). Templates are appropriate if the control's appearance needs to change, but its functionality should remain intact, and is what's needed.
Custom and user controls are used when new functionality is needed that is not provided by any built-in control. By deriving from
Control, dependency properties and events can be added to create a new reusable control.
User controls ...