之前在界面上写多个控件时,对于字体、对齐方式、高度、宽度都是独立编写。类似下面这样:
<Button FontSize="18" Width="30" Margin="0,0,0,0"/>
<Button FontSize="18" Width="30" Margin="100,0,0,0"/>
其实很多相同类型的控件,放置在界面上时,都是使用统一的风格的,也就是说很多的Style是一样的,只是位置不同(当然,实现的功能也不一样)。
之前一直考虑写个库,在库里面写好默认风格。只在需要调整时,才设置相应的属性的值。
今天忽然发现,这根本不需要,微软早已经考虑到这点,可以把相同的属性独立出来,在Resources中写好(这很像CSS)。
例如,要将某个Grid下的Button控件使用统一的风格,可以这么写:
<Grid.Resources>
<Style TargetType="Button"> <!-所有的Button都将使用以下属性->
<Setter Property="FontSize" Value="18"/>
<Setter Property="Width" Value="30"/>
</Style>
</Grid.Resource>
<Button Margin="0,0,0,0"/>
<Button Margin="100,0,0,0"/>
这样,一方面可以减少代码量。另一方面,如果需要修改风格,只要在一个地方去修改就可以了。
不过这个功能实际上跟CSS还是略有差别,就是例如在父级设置了某几个属性,在子级设置另外几个属性的值,父级的属性会被失效(父级与子级设置的是不同的属性)。当然,在控件级设置属性是不会使父级属性失效的。
例如:
层次结构是:Window → Grid1 → Grid2 → 最终控件
在Grid1设置属性a、b,如果在Grid2设置属性c、d,属性a、b也会变成默认值,但不设置Grid2,在最终控件处设置c、d,是不会让a、b失效的。