跟在css一样,silverlight 3中也可以创建层叠样式了。
你可以在一个样式的基础上追加或者重写样式的值,这样就可以在silverlight中创建一个强大的并且可以重用的样式表了。
语法:
级联样式是通过样式表的新的 BasedOn 属性实现的。
- <UserControl x:Class="BasedOnStyles.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
- <UserControl.Resources>
- <Style x:Name="Headline" TargetType="TextBlock">
- <Setter Property="FontFamily" Value="Verdana" />
- <Setter Property="FontSize" Value="14" />
- </Style>
- <Style x:Name="ImportantHeadline" TargetType="TextBlock" BasedOn="{StaticResource Headline}">
- <Setter Property="Foreground" Value="Red" />
- </Style>
- <Style x:Name="HomePageHeadline" TargetType="TextBlock" BasedOn="{StaticResource Headline}">
- <Setter Property="FontSize" Value="18" />
- </Style>
- </UserControl.Resources>
- <StackPanel>
- <TextBlock Text="TextBlock with applied Headline style" Style="{StaticResource Headline}" />
- <TextBlock Text="TextBlock with applied ImportantHeadline style" Style="{StaticResource ImportantHeadline}" />
- <TextBlock Text="TextBlock with applied HomePageHeadline style" Style="{StaticResource HomePageHeadline}" />
- </StackPanel>
- </UserControl>
在这里我们定义了一个控制TextBlock元素的FontFamily和FontSize的基本样式 Headline. 接下来我们定义了另外一个指向TextBlock元素的样式 ImportantHeadline。需要注意的是这里添加了一个额外的属性 BasedOn. 这个样式是基于basedon的值的----就像这个例子里的Headline。在这里我们设置Textblock的前景属性为红色。
当我们在TextBlock控件上使用ImportantHeadline属性,就会使用Headline样式的所有值和ImportantHeadline的被设置的值。
然后定义另外一个HomePageHeadline样式,他也是基于Headline样式的。
效果图如下:
