Silverlight技术之Style和StaticResource

了解并使用Silverlight就不得不提到Style和StaticResources,简单的Style应用大家都知道,本篇重点讲解,怎么在控件上同时指定两个样式?怎么使用StaticResource设置一个固定的集合,即将一个固定的集合列表绑定到控件上?下边直接开始相关的应用示例,先说第一个Style设置Button按钮,第一个Button样式设置其FontSize,Foreground,FontWeight。同时又想指定另外一个样式Margin和Content,这时就要在一个控件上指定两个样式,在SL中实现方式如下:

  
  
< Style TargetType = " Button " x:Key = " ButtonStyle " >
< Setter Property = " Foreground " Value = " Red " />
< Setter Property = " FontSize " Value = " 14 " />
   
< Setter Property = " Fontweight " Value = " bold " />
</ Style >

具体到一个按钮中,添加对其样式的引用

  
  
< Button Style = " {StaticResource ButtonStyle} " Content = " 确定 " ></ Button >

但此时如果我们还想对Button指定其他样式,我们该怎么办呢?在Silverlight的Style中,指定了Baseon属性,可以继承一个样式,于是当需要重复只用样式时就可以这样再指定一个,但缺点之一是baseon只能在一个样式中使用一次,添加一个新样式CustomBtn,代码如下:

  
  
< Style TargetType = " Button " x:Key = " CustomBtn " BaseOn = " ButtonStyle " >
< Setter Property = " Margin " Value = " 4,0,4,0 " />
< Setter Property = " Content " Value = " 自定义确定 " />
</ Style >

好了,至此这个按钮将同时具有上文所定义ButtonStyle和CustomBtn指定的样式。关于Style说明如下几点:

1、像Web网页一样,把常用的样式提取出来,定义到单独的样式文件中,在需要的界面上添加对应文件的引用,这样便于管理,重用和修改

2、可以设置默认样式,隐式应用到各控件,主要是指定TargetType

3、样式就近生效,在Style文件中和界面上分别指定Content,在界面的更靠近展现控件,因此覆盖在Style中定义的Content

4、目前的样式有,控件样式,界面样式和全局样式。

简单说明这么多,具体到应用中不清楚的可以再查询相关资料。

第二个问题,定义StaticResource,在实际应用中,常常有一些固定的下拉列表,如这个场景->证件类型:有身份证,护照,军官证,港澳台证等

这些内容是固定的,内容较少不适应划分数据表存在数据库中,直接书写在界面上吧,如果多个界面都使用此列表呢,重复的代码,还容易把顺序搞乱,于是考虑

能否在StaticResource中得以应用。然后每个界面使用时对应的绑定即可。

经分析可以的,首先定义实体吧,此类信息都具有name,Value两个属性,直接声明相关类,然后在指定一个列表把需要的字段都添加进去,注意此时类需要

具备IEnumerate接口,因为在绑定资源时,他要进行迭代显示,因此我们显式实现此接口。完成此此类后,接下来就是在界面上添加对应的应用,然后进行

绑定呈现,经验证,效果符合预期。这样相关使用此列表的界面都能保证数据一致,而且不用在每个列表中单独的定义。

如果不使用资源绑定,在界面上单独书写,代码如下:

复制代码
  
  
< ComboBox >
< ComboBoxItem Content ="请选择证件类型" />
< ComboBoxItem Content ="A.身份证" />
< ComboBoxItem Content ="B.军官证" />
< ComboBoxItem Content ="C.护照" />
< ComboBoxItem Content ="D.港澳台居民证件" />
< ComboBoxItem Content ="E.其他" />
</ ComboBox >
复制代码

每个使用的界面,都要单独这样定义,如果使用列表后,则可以单独书写如下代码:

  
  
< Grid.Resources >
< Options:CardType x:Name ="SlCardType" ></ Options:CardType >
</ Grid.Resources >
<!-- 省略其它代码 -->
< ComboBox x:Name ="cmbCardType" Style =" {StaticResource CmbStyle} " ItemsSource =" {StaticResource SlCardType} " DisplayMemberPath ="Name" SelectedValuePath ="Value" />

以上代码就简单实现了资源的绑定,在多界面都需要使用此列表中,尤为有效,如果只单独一个界面使用,效果不太明显。

此上为个人的方法,大家有好的建议和意见可以交流一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值