Default Styles
Although the ability to provide a custom look for a control is useful, developers should be able to use a control without having to supply custom visuals. The control should just work when used in its most straightforward way, which means that it should supply a default set of visuals. This is normally done by providing a style that sets default property values, including a default control template.
Logically speaking, these default styles live in the system resource scope. As we saw in Chapter 12, this scope contains system-defined resources such as system colors, and default styles for built-in controls. If you write a custom control, you can add your own resources to this scope by adding a themes\generic.xaml file to your project. See Chapter 12 for more information on custom system-scope resources.
For each custom control, you should define a system-scope style
with a TargetType specifying your
control. This style must set the Template property with a ControlTemplate defining the default visuals
for your control, such as the one shown in Example 18-26. See Chapter 8 and Chapter 9 for more information on how to define a
style that supplies a template.
Example 18-26. Default visuals
<!-- themes/generic.xaml -->
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomControlLib">
<Style TargetType="{x:Type local:MyCustomControl}" > <Setter Property="Template"> ...