WPF的Style的TargetType不同写法的异同(转载)

WPF的Style的TargetType不同写法的异同

1

2

3

4

5

6

<Style TargetType="TextBlock">

<Setter Property="FontSize" Value="28"/>

</Style>

<Style TargetType="{x:Type TextBlock}">

<Setter Property="FontSize" Value="28"/>

</Style>

完全没区别~~前者用了默认的隐式的方式,后者用了一个显式的命名空间引用。但其实是一样的,都是自动给TextBlock应用样式

1

2

3

<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="28"/>
</Style>

如果将 x:Key 值显式设置为 {x:Type TextBlock} 之外的任何值,如上面设置为 x:key="cc",Style 就不会自动应用于所有 TextBlock 元素。此时,必须通过使用 x:Key 值,将样式显式应用于 TextBlock 元素。

<Style x:Key="aa">
  <Setter Property="Control.FontSize" Value="28"/>
</Style>

样式位于资源部分,并且未设置样式的 TargetType 属性,则必须提供 x:Key。

除了提供 x:Key 的默认值之外,TargetType 属性还指定要应用 setter 属性的类型。如果未指定 TargetType,则必须通过语法 Property="ClassName.Property",用类名限定 Setter 对象的属性。例如,必须将 Property 设置为 "TextBlock.FontSize" 或 "Control.FontSize",而不要设置 Property="FontSize"。

猜你喜欢

转载自blog.csdn.net/luzhangtong/article/details/87737066