Solución:
Puede establecer directamente el estilo de UserControl de esta manera:
<UserControl x:Class="MyNamespace.MyControl" xmlns:local="MyNamespace" ...>
<UserControl.Style>
<Style>
<Setter Property="local:MyControl.MyProperty" Value="..."/>
...
</Style>
</UserControl.Style>
</UserControl>
o así:
<UserControl x:Class="MyNamespace.MyControl" xmlns:local="MyNamespace" ...>
<UserControl.Style>
<Style TargetType="local:MyControl">
<Setter Property="MyProperty" Value="..."/>
...
</Style>
</UserControl.Style>
</UserControl>
Un estilo predeterminado en los recursos de UserControl también debería funcionar:
<UserControl x:Class="MyNamespace.MyControl" xmlns:local="MyNamespace" ...>
<UserControl.Resources>
<Style TargetType="local:MyControl">
<Setter Property="MyProperty" Value="..."/>
...
</Style>
</UserControl.Resources>
</UserControl>
Necesitas quitar el x:Key
de su estilo definido para que se pueda aplicar universalmente a todos los controles del mismo tipo que lo que se define en el TargetType
.
Para citar de MSDN para Propiedad Style.TargetType:
Establecer la propiedad TargetType en el tipo TextBlock sin establecer una x: Key establece implícitamente la x: Key en {x: Type TextBlock}. Esto también significa que si le das la […] Aplicar estilo a un valor x: Key de cualquier otro valor que no sea {x: Type TextBlock}, el estilo no se aplicaría a todos los elementos TextBlock automáticamente. En su lugar, debe aplicar el estilo a los elementos TextBlock explícitamente.