原文:WPF的Style的TargetType不同写法的异同
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="28"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="28"/>
</Style>
完全没区别~~前者用了默认的隐式的方式,后者用了一个显式的命名空间引用。但其实是一样的,都是自动给TextBlock应用样式
<Style x:Key="{x:Type TextBlock}" TargetType="TextBlock">
<Setter Property="FontSize" Value="28"/>
</Style>
这种写法和上面的也完全没有区别。将 TargetType 属性设置为 TextBlock 而不为样式分配 x:Key,样式就会应用于所有 TextBlock 元素。这种情况下,x:Key 隐式设置为 {x:Type TextBlock}。
<Style x:Key="cc" TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value=""/>
</Style>
如果将 x:Key 值显式设置为 {x:Type TextBlock} 之外的任何值,如上面设置为 x:key="cc",Style 就不会自动应用于所有 TextBlock 元素。此时,必须通过使用 x:Key 值,将样式显式应用于 TextBlock 元素。
<Style x:Key="aa">
<Setter Property="Control.FontSize" Value=""/>
</Style>
样式位于资源部分,并且未设置样式的 TargetType 属性,则必须提供 x:Key。
除了提供 x:Key 的默认值之外,TargetType 属性还指定要应用 setter 属性的类型。如果未指定 TargetType,则必须通过语法 Property="ClassName.Property",用类名限定 Setter 对象的属性。例如,必须将 Property 设置为 "TextBlock.FontSize" 或 "Control.FontSize",而不要设置 Property="FontSize"。