Why do some properties need a default defined in the style before a DataTrigger takes effect?
Why is it that some dependency properties need to have a default setter in the style before the triggered setters will take effect?

For example, 


    <!-- Does not work -->
    <Style TargetType="{x:Type ContentControl}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding SomeProperty}" Value="A">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding SomeProperty}" Value="B">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
    
    <!-- Works -->
    <Style TargetType="{x:Type ContentControl}">
        <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding SomeProperty}" Value="A">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding SomeProperty}" Value="B">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

I saw a good explanation of it somewhere, but I can't remember where. I recall it had something to do with [the order that WPF applies dependency property values][1], but I can't remember the details, or why some properties need the default defined before triggers will take effect, while others do not.


  [1]: http://msdn.microsoft.com/en-us/library/ms743230.aspx
Why do some properties need a default defined in the style before a DataTrigger takes effect?
===

Why is it that some dependency properties need to have a default setter in the style before the triggered setters will take effect?

For example, 


    <!-- Does not work -->
    <Style TargetType="{x:Type ContentControl}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding SomeProperty}" Value="A">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding SomeProperty}" Value="B">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
    
    <!-- Works -->
    <Style TargetType="{x:Type ContentControl}">
        <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding SomeProperty}" Value="A">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding SomeProperty}" Value="B">
                <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

I saw a good explanation of it somewhere, but I can't remember where. I recall it had something to do with [the order that WPF applies dependency property values][1], but I can't remember the details, or why some properties need the default defined before triggers will take effect, while others do not.


  [1]: http://msdn.microsoft.com/en-us/library/ms743230.aspx