通过把同样的内嵌样式提升到资源中(正如第一章介绍的),我们可以给它 一个名字,以及按名字使用它在我们的Button实例上,正如示例5-5。
示例5-5
<!-- Window1.xaml -->
<Window >
<Window.Resources>
<Style x:Key="CellTextStyle">
<Setter Property="Control.FontSize" Value="32" />
<Setter Property="Control.FontWeight" Value="Bold" />
</Style>
</Window.Resources>
<Button Style="{StaticResource CellTextStyle}" x:Name="cell00" />
</Window>
在示例5-5中,我们在属性中使用到Control前缀取代Button前缀,从而允许 样式更广泛的应用,正如我们将要看到的。
5.3.1 TargetType属性
方便起见,如果所有的属性可以在一个共享类中设置,像我们示例中的 Control,我们可以提升这个类的前缀,放入TargetType属性中,并将其从属性 的名称中移除掉。如示例5-6所示。
示例5-6
<Style x:Key="CellTextStyle" TargetType="{x:Type Control}">
<Setter Property="FontSize" Value="32" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
当提供了一个TargetType属性,你能够只设置该类型可接受的属性。如果你 想要在继承树下扩展一组大量的属性,你可以通过使用一个派生类型来做到这些 ,如示例5-7。
示例5-7
<Style x:Key="CellTextStyle" TargetType="{x:Type Button}">
<!-- IsCancel is a Button-specific property -->
<Setter Property="IsCancel" Value="False" />
<Setter Property="FontSize" Value="32" />
<Setter Property="FontWeight" Value="Bold" />
</Style>