Silverlight实用窍门系列:Style

开发 后端
Style分为内联样式(控件本身样式)、页内级别样式(本身UserControl.Resources内样式)、应用程序域级别样式(App.Xaml内样式)、ResourceDictionary字典资源。

在Silverlight中的Style相当于Html中的Css,是其一个重要的组成部分。它可以声明于UserControl.Resources也就是本页面资源内或者控件资源内,也可以声明于App.Xaml内或者ResourceDictionary字典资源内。

Style分为内联样式(控件本身样式)、页内级别样式(本身UserControl.Resources内样式)、应用程序域级别样式(App.Xaml内样式)、ResourceDictionary字典资源。

Style的作用顺序是就近原则,比如一个控件先使用自身样式,然后在本页面内的资源寻找具有指定Key的样式,如果找到就使用此样式,没有就找App.Xaml内样式,再没有就取ResourceDictionary字典资源内寻找。

A.其声明为 <Style TargetType="ListBox" x:Key="listBox" BasedOn="{StaticResource fontColor}"></Style>

TargetType:针对什么控件

x:Key:此样式的样式名称Key,对于不需要x:Key指定的隐式样式,我们将会在下节讲述。

BasedOn:继承于什么样式,注意继承的样式需要以BasedOn="{StaticResource fontColor}"指定上级Style的Key

B.样式内部项以<Setter></Setter>标签声明,如<Setter Property="FontSize" Value="15"></Setter>

Property:作用于什么属性

Value:设置的值是什么?

同样其也可以用以下方式申明Setter值,在这里把整个DataTemplate模板作为一个Setter的Value,然后设置针对属性值为ListBox的ItemTemplate属性。

  1. <Setter Property="ItemTemplate">  
  2.                 <Setter.Value>  
  3.                     <DataTemplate>  
  4.                         <StackPanel Orientation="Vertical" >  
  5.                             <StackPanel Orientation="Horizontal" Margin="5" Width="380">  
  6.                                 <TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock>  
  7.                                 <TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox>  
  8.                                 <TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox>  
  9.                                 <TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock>  
  10.                             </StackPanel>  
  11.                             <StackPanel Orientation="Horizontal"  Visibility="Collapsed">  
  12.                                 <TextBox Text="{Binding ArtContent}" Width="280"></TextBox>  
  13.                             </StackPanel>  
  14.                         </StackPanel>  
  15.                     </DataTemplate>  
  16.                 </Setter.Value>  
  17.             </Setter> 

最后贴出针对ListBox设置的样式继承于某fontColor样式,代码如下:

  1. <Application.Resources>  
  2.         <Style TargetType="ListBox" x:Key="fontColor">  
  3.             <Setter Property="Foreground" Value="Red"></Setter>  
  4.         </Style>  
  5.         <Style TargetType="ListBox" x:Key="listBox" BasedOn="{StaticResource fontColor}">  
  6.             <Setter Property="FontSize" Value="15"></Setter>  
  7.             <Setter Property="FontFamily" Value="Georgia"></Setter>  
  8.             <Setter Property="ItemTemplate">  
  9.                 <Setter.Value>  
  10.                     <DataTemplate>  
  11.                         <StackPanel Orientation="Vertical" >  
  12.                             <StackPanel Orientation="Horizontal" Margin="5" Width="380">  
  13.                                 <TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock>  
  14.                                 <TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox>  
  15.                                 <TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox>  
  16.                                 <TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock>  
  17.                             </StackPanel>  
  18.                             <StackPanel Orientation="Horizontal"  Visibility="Collapsed">  
  19.                                 <TextBox Text="{Binding ArtContent}" Width="280"></TextBox>  
  20.                             </StackPanel>  
  21.                         </StackPanel>  
  22.                     </DataTemplate>  
  23.                 </Setter.Value>  
  24.             </Setter>  
  25.         </Style>  
  26.     </Application.Resources> 

在看实例中使用样式如下代码:

  1. <UserControl.Resources>  
  2.         <local:ArtList x:Key="SourceList"></local:ArtList>  
  3.     </UserControl.Resources>  
  4.     <Grid x:Name="LayoutRoot" Background="White"  DataContext="{StaticResource SourceList}">  
  5.         <ListBox x:Name="lbRes" ItemsSource="{Binding ArticleList}"  Style="{StaticResource listBox}" 
  6.                  Margin="0 50 0 0 " 
  7.                  HorizontalAlignment="Left" VerticalAlignment="Top" 
  8.                   Height="400"  >  
  9.         </ListBox>  
  10.     </Grid> 

实现效果如下图,可以看到该ListBox实现了Style中的模板样式和字体大小等,另外还继承了fontColor样式中的字体颜色,如需源码请点击 SLStyle.zip 下载。

原文链接:http://www.cnblogs.com/chengxingliang/archive/2012/07/02/2558112.html

【编辑推荐】

责任编辑:张伟 来源: 程兴亮的博客
相关推荐

2009-08-03 18:46:38

Silverlight

2009-12-31 17:00:40

Silverlight

2013-12-31 09:26:31

JavaScript技巧

2009-08-04 09:32:27

部署Silverlig

2011-09-08 14:21:37

jQueryWidget

2010-11-26 10:57:13

跳槽

2009-12-29 20:23:15

布线

2020-07-15 08:00:52

Rust语言技巧

2009-10-09 13:33:00

自学CCNACCNA

2010-05-13 10:57:51

MySQL SELEC

2009-02-02 10:53:34

SilverlightSilverlightRIA

2010-04-22 15:34:16

Oracle海量数据

2010-04-06 14:58:04

CDMA无线上网提速窍

2010-12-15 14:59:58

脚本Excel

2011-04-18 13:52:31

Ubuntu MAC

2010-08-24 13:55:38

DIVstyle

2010-03-15 12:56:55

Python Java

2011-01-27 08:49:47

SilverlightWeb.NET

2011-01-26 09:50:18

Silverlight.NetJavaScript

2018-09-11 08:40:00

前端JavaScriptt性能优化
点赞
收藏

51CTO技术栈公众号