Silverlight 5 beta新特性探索系列:8.Silverlight 5中自定义扩展标记

简介:

        在Silverlight 5中新增了自定义扩展标记,它通过继承于 MarkupExtension 类,重载该类中的ProvideValue方法以判断得到相应的返回值,以设置被绑定控件的属性。

        下面我们通过一个最为简单的实例来理解自定义扩展标记是如何工作的。

        第一步:新建一个UserMarkExtension.cs类,注意UserMark(扩展标记名)+Extension.cs(固定的后缀)=UserMarkExtension.cs

        第二步:设置3个可被访问的属性标签LBText,LBWidth,RcRadius

        第三步:重载PrivideValue函数,设置返回的属性值,

             三个步骤的UserMarkExtension.cs类代码如下:

 


 
 
  1. /// <summary> 
  2. /// 第一步:新建一个UserMarkExtension.cs类 
  3. /// 注意UserMark(扩展标记名)+Extension.cs(固定的后缀)=UserMarkExtension.cs 
  4. /// </summary> 
  5. public class UserMarkExtension : MarkupExtension 
  6. //第二步:设置3个可被访问的属性LBText,LBWidth,RcRadius 
  7. public string LBText { get; set; } 
  8. public double LBWidth { get; set; } 
  9. public double RcRadius { get; set; } 
  10. //第三步:重载PrivideValue函数,设置返回的属性值 
  11. public override object ProvideValue(IServiceProvider serviceProvider) 
  12. //如果前台调用自定义标记时LBText值为Text, 
  13. if (LBText == "Text"
  14. return LBText = "我是一个Text"
  15. else if (RcRadius > 0) 
  16. return RcRadius = 15; 
  17. else 
  18. return LBWidth = 99; 
  19.  

        第四步:为需要设置自定义扩展标记的控件设置{local:UserMark LBText=Text},其含义为设置定制扩展标记local:UserMark,其属性LBText的值为Text,根据此值可以查询自定义扩展标记 中PrivideValue函数,于是得到返回值“我是一个Text”。同理绑定其他属性值!现在我们看MainPage.xaml的代码如下:


    
    
  1. <Grid x:Name="LayoutRoot" Background="White"
  2.     <!--第四步:Content="{local:UserMark LBText=Text}", 
  3.     设置定制扩展标记local:UserMark,设置其属性LBText的值为Text"--> 
  4.     <sdk:Label Height="47" HorizontalAlignment="Left" 
  5.                Content="{local:UserMark LBText=Text}"   Margin="70,106,0,0" 
  6.                Name="label1" VerticalAlignment="Top" Width="100" /> 
  7.     <sdk:Label Height="47" HorizontalAlignment="Left" 
  8.                Content="{local:UserMark LBWidth=1}"   Margin="70,159,0,0" 
  9.                Name="label2" VerticalAlignment="Top" Width="100" /> 
  10.     <Rectangle Height="67" HorizontalAlignment="Left" 
  11.                Fill="DarkRed" RadiusX="{local:UserMark RcRadius=1}" 
  12.                RadiusY="{local:UserMark RcRadius=1}"    Margin="223,106,0,0" 
  13.                Name="rectangle1" Stroke="Black" StrokeThickness="1" 
  14.                VerticalAlignment="Top" Width="116" /> 
  15. </Grid> 
        在本实例中我们仅仅是最简单的演示了自定义扩展标记的使用方法和运行原理,个人觉得这个功能将会对MVVM的支持非常有益,大家可以试着扩展一下。

        本实例采用VS2010+Silverlight 5.0 beta编写,如需源码请点击 SL5MarkupExt.zip 下载。下面我们看运行效果图:



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/826415

相关文章
Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象
原文:Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象 原创文章,如需转载,请注明出处。   最近在一直研究Silverlight下的数据绑定控件,发现有这样两个接口IEditableObject 和IEditableCollectionView,记录一下结论,欢迎交流指正。
869 0
|
容器 前端开发 测试技术
微软Silverlight 5.0新特性
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/6088631 微软Silverlight 5.0新特性   最近微软发布了Silverlight 5.0的路线图。
712 0

热门文章

最新文章