SilverLight学习笔记--建立Silverlight自定义控件(2)--事件响应

Silverlight自定义控件
本文介绍了如何在Silverlight中创建自定义控件,并详细解释了如何为自定义控件添加Click事件及其响应处理。通过示例代码展示了事件声明、触发及处理过程。

 设计完了自定义控件的外观,接下来我们要设计自定义控件的事件响应,在本例中我们添加此控件的Click事件。

1、添加事件
   实现 Silverlight 控件中的事件通常与实现普通的 Microsoft® .NET Framework 类中的事件一样:您只需声明控件类中的事件,然后编写代码引发这些事件。
但是与 Silverlight 中事件引发稍有不同的一点是:Silverlight 支持路由事件。在 Siverlight 中,事件只能向上传递,即“冒泡”操作。路由事件由 RoutedEventHandler 委托定义,并且路由事件处理程序接收 RoutedEventArgs 对象,该对象包含用于确认引发此事件的对象的 Source 属性(如果此事件最初由可视树中的深层对象引发,则该属性不同于传递给事件处理程序的发送者参数)。内置 Button 控件的 Click 事件是一个路由事件,因此 SimpleButton 的 Click 事件也应该是路由事件。
   显示了为引发路由 Click 事件,必须对 MySilverButton.cs 中的控件类做修改。现在,我们要在MySilverButton的构造函数中为 MouseLeftButtonUp 事件注册一个处理程序。如果至少存在一个注册的侦听器,则此处理程序就可以引发 Click 事件。如果 button-down 事件先于 button-up 事件,则传统的按钮控件只能引发 Click 事件。为使源代码尽可能简单,MySilverButton中省略了该逻辑。
  需要添加的代码如下:

   public   event  RoutedEventHandler Click;    // 在前面声明
   this .MouseLeftButtonUp  +=   new  MouseButtonEventHandler(SimpleButton_MouseLeftButtonUp);  // 添加到构造函数中
   void  SimpleButton_MouseLeftButtonUp( object  sender, MouseButtonEventArgs e)
   {
       
if  (Click  !=   null )
          Click(
this new  RoutedEventArgs());
   }

 

 完整代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace MyDesignButton
{
    
public class MySilverButton: ContentControl 
    {
        
public event RoutedEventHandler Click; //添加Click事件

        
public MySilverButton()
        {
            
this.DefaultStyleKey = typeof(MySilverButton);

            
this.MouseLeftButtonUp += new MouseButtonEventHandler(SimpleButton_MouseLeftButtonUp); //添加Click事件

        }

        
//添加Click事件
        void SimpleButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            
if (Click != null)
                Click(
thisnew RoutedEventArgs());
        }
    }
}

 

2、测试事件响应
要测试 Click 事件,我们需要回到MySLbutton项目,修改 Page.xaml 中的控件声明,如下所示:

         < custom:MySilverButton x:Name = " MyFirstSLbutton "  Click = " MyFirstSLbutton_Click " >
        
</ custom:MySilverButton >

然后在 Page.xaml.cs 中编写MyFirstSLbutton_Click事件处理程序,代码如下:

         private   void  MyFirstSLbutton_Click( object  sender, RoutedEventArgs e)
        {
            System.Windows.Browser.HtmlPage.Window.Alert(
" Click事件生效! " );
        }

 

生成项目后运行,现在,单击 Button 应生成一个包含单词“Click事件生效!”的警告框 — 证明已引发并正确处理了此事件:
下一篇:
SilverLight学习笔记--建立Silverlight自定义控件(3)--操作控件内部成员 前往:Silverlight学习笔记清单

转载于:https://www.cnblogs.com/wsdj-ITtech/archive/2009/07/17/1525403.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,提出自适应参数调整、模型优化和行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值