Welcome

首页 / 软件开发 / .NET编程技术 / 《Programming WPF》翻译 第5章 3.命名属性

《Programming WPF》翻译 第5章 3.命名属性2011-09-11 博客园 包建强通过把同样的内嵌样式提升到资源中(正如第一章介绍的),我们可以给它 一个名字,以及按名字使用它在我们的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>