此文章实例基于Silverlight实用窍门系列:68.Silverlight的资源字典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属性。

 <Setter Property="ItemTemplate"><Setter.Value><DataTemplate><StackPanel Orientation="Vertical" ><StackPanel Orientation="Horizontal" Margin="5" Width="380"><TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock><TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox><TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox><TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock></StackPanel><StackPanel Orientation="Horizontal"  Visibility="Collapsed"><TextBox Text="{Binding ArtContent}" Width="280"></TextBox></StackPanel></StackPanel></DataTemplate></Setter.Value></Setter>

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

    <Application.Resources><Style TargetType="ListBox" x:Key="fontColor"><Setter Property="Foreground" Value="Red"></Setter></Style><Style TargetType="ListBox" x:Key="listBox" BasedOn="{StaticResource fontColor}"><Setter Property="FontSize" Value="15"></Setter><Setter Property="FontFamily" Value="Georgia"></Setter><Setter Property="ItemTemplate"><Setter.Value><DataTemplate><StackPanel Orientation="Vertical" ><StackPanel Orientation="Horizontal" Margin="5" Width="380"><TextBlock Text="{Binding ArtName}" Margin="5 10 0 0"></TextBlock><TextBox Text="{Binding ArtContent}" Name="tbName" Margin="5"></TextBox><TextBox Text="{Binding ArtAuthor}" Margin="5"></TextBox><TextBlock Text="{Binding ArtUpdateTime}" Margin="5 10 0 0"></TextBlock></StackPanel><StackPanel Orientation="Horizontal"  Visibility="Collapsed"><TextBox Text="{Binding ArtContent}" Width="280"></TextBox></StackPanel></StackPanel></DataTemplate></Setter.Value></Setter></Style></Application.Resources>

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

    <UserControl.Resources><local:ArtList x:Key="SourceList"></local:ArtList></UserControl.Resources><Grid x:Name="LayoutRoot" Background="White"  DataContext="{StaticResource SourceList}"><ListBox x:Name="lbRes" ItemsSource="{Binding ArticleList}"  Style="{StaticResource listBox}"Margin="0 50 0 0 "HorizontalAlignment="Left" VerticalAlignment="Top"Height="400"  ></ListBox></Grid>

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

本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2012/07/02/2558112.html,如需转载请自行联系原作者

Silverlight实用窍门系列:71.Silverlight的Style相关推荐

  1. Silverlight实用窍门系列:59.多个中心点联动多线的可拖动控件扩展为拓扑图

    在本系列的第17篇文章中"Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图.拓扑图基础) ",制作了基本的中心联动图标.有园友对此图的扩展不是很清晰 ...

  2. Silverlight实用窍门大集合+Silverlight 5 最全新特性【目录索引】

    在最近的几个月内整理出了Silverlight的一些相关的比较实用的功能讲解文章,并且随着Silverlight 5 beta版本的发布整理出的新特性系列文章,在这里做一个总的概括和索引,以方便大家观 ...

  3. Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...

    Silverlight中的事件分为普通事件和冒泡路由事件,它并没有包括WPF中的隧道路由事件,在本章中将详细讲解冒泡路由事件和如何注册一个冒泡路由事件. 一.细解冒泡路由事件 冒泡路由事件可以比喻为: ...

  4. Silverlight实用窍门系列:51.Silverlight页面控件的放大缩小、Silverlight和Html控件的互相操作...

    本节将讲述三个Silverlight中应用的小技巧:Silverlight页面的放大缩小.Silverlight操作Html.Html操作Silverlight控件. 一.Silverlight页面的 ...

  5. Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地

    在Silverlight中我们可以捕捉视频设备以制作视频会议系统,或者通过视频设备截图功能上传头像等功能. 下面我们通过一个简单的实例来访问视频设备,并且截取图像下载该截图文件至本地. 一.在Silv ...

  6. Silverlight实用窍门系列:61.Silverlight中的Trigger触发器,自定义翻页触发器

    在Silverlight应用程序和客户进行交互工作的时候可以不用写后台代码而通过Xaml代码来实现,在本文我们将学习了解Trigger触发器. Trigger触发器:引发动作的因素,比如鼠标点击.键盘 ...

  7. Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】...

    在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载.比如调用DLL来识别身份证读卡器传输过来 ...

  8. Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件...

    在Silverlight中我们使用了数据模板,在很多时候也需要获取到数据模板上的控件,并且进行改变.本文使用的实例数据源和上节相同,如需了解请下载源码查看. 当然在这里我们可以分为获取数据模板原始控件 ...

  9. Silverlight实用窍门系列:65.Silverlight的数据模板DataTemplate(一)使用数据模板

    在Silverlight中,我们的数据列表显示控件有ListBox.DataGrid等.对于显示出来的数据条目样式外观的管理是通过DataTemplate(数据模板)来完成的.本节将从DataTemp ...

最新文章

  1. ajax跨界表单,ajax使用jsonp解决跨域问题
  2. NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
  3. 计算机三级数据库应用题设计题,2017年计算机三级《数据库技术》模拟应用题及答案...
  4. 2020-10-30(smali复杂类解析)
  5. QML编程之旅 之可视元素
  6. Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板
  7. mysql端口4050_mysql 安装使用小记
  8. vmware虚拟机网络模式
  9. 【专家专栏】浅谈百度搜索排序
  10. 面向对象设计模式与原则
  11. java如何操作视图
  12. pe中怎么卸载服务器系统更新,方法四: 使用专用工具卸载系统更新补丁(和方法三类同...
  13. 英语形容词的排列顺序
  14. shell 脚本中双引号、单引号、反引号的区别
  15. Win系统 - 如何查看电脑有几个内存条插槽?
  16. 推荐 7 个 yyds 的开源项目
  17. 1078 加油站加油
  18. android sqlite 分词,sqlite fts3自定义分词器 zz
  19. 微信考勤签到 php,【投稿】微信签到打卡领积分源码,每日积分签到
  20. Android开发--文件系统中的内部存储和外部存储最全解析 附文件数据保存操作封装

热门文章

  1. 蓝桥杯 ALGO-107 算法训练 9-7链表数据求和操作
  2. PAT 乙级 1023. 组个最小数 (20) Java版
  3. php 页面异步刷新,php+jQuery+Ajax简单实现页面异步刷新
  4. 小黑框运行java_初探Java类加载机制
  5. java 实现WebService 以及不同的调用方式
  6. [UWP]创建一个ProgressControl
  7. zabbix分布式监控环境搭建
  8. 昨晚的我是歌手,人工智能也掺了一脚
  9. Google发布Puppeteer 1.0
  10. Windows7下搭建Eclipse+Python开发环境