巧用Delegate在SilverLight多个页面、控件中传递回调方法

来源:互联网 发布:数组转化为字符串 编辑:程序博客网 时间:2024/06/06 01:46

    在论坛中看到经常有人碰到如何在SilverLight多个页面或者控件中传替参数或者值的问题,今天抽空通过Delegate机制实现回调实例方法重设动画参数的DEMO,分享给大家。最终结果如图:

DEMO 效果
    演示地址:
http://xingjunli.webs.com/DelegateDemo.html
    参考资料:动画概述:http://msdn.microsoft.com/zh-cn/library/cc189019(VS.95).aspx 委托:http://msdn.microsoft.com/zh-cn/library/900fyy8e.aspx
   1、初识委托:
      委托delegate有点类似于非托管C/C++中的函数指针,在C#中通过委托机制来回掉实例方法,静态方法等(更重要是委托为托管代码,能保证回调方法的类型的安全)
   2、使用委托回调实例方法:  
      2.1、用C#的delegate关键字来定义回掉函数的签名(本示例中我们通过一个单独的类来实义委托以提高重用):
   
     2.2、在子窗体类中我们定义一个委托类型对象如:
  
     2.3、在父窗体中实例化子窗体时将实例方法传递给委托:
  

     2.4、用我们熟悉的方法调用语法来调用回掉函数:

     3、上面我们应用委托实现了最简单的应用,实际工作中会复杂的多;我们的编译器和CLR为我们做了大量幕后工作以减轻使用的复杂性;如需了解更多请参考:委托(C# 编程指南)http://msdn.microsoft.com/zh-cn/library/ms173171.aspx
   实现步骤(附源代码):
     声明委托类型:

 
    子窗体XAML:

 
    子窗体CS:

 
    父窗体XAML:

 
    父窗体CS:

 
  结束语:SilverLight同.Net FrameWork本身已经很好的结合起来,C#中一些实用的编程机制(如:委托),在SL中合理运用,将给我们带来意想不到的收获!