自定义事件。。转

转载 2012年03月22日 14:31:30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Windows.Controls;
using System.Windows;
namespace Callback_Validation_DPs
{
    #region 依赖属性简单调用  步骤
    public class SimpleDPClass : Control//DependencyObject
    {
        public SimpleDPClass() : base() { }
        public static readonly DependencyProperty SimpleDPProperty =
            DependencyProperty.Register("SimpleDP", 
                    typeof(double), 
                    typeof(SimpleDPClass),
                    new FrameworkPropertyMetadata(
                    Double.NaN,//(double)0.0,
                    FrameworkPropertyMetadataOptions.None,
                    new PropertyChangedCallback(OnValueChanged),
                    new CoerceValueCallback(CoerceValue)
                    ),
                    new ValidateValueCallback(IsValidValue));

        public double SimpleDP
        {
            get { return (double)GetValue(SimpleDPProperty); }
            set { SetValue(SimpleDPProperty, value); }
        }

        private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MessageBox.Show("当值改变时,我们可以做的一些操作,具体可以在这里定义:" + e.NewValue);
        }

        private static object CoerceValue(DependencyObject d, object value)
        {
            MessageBox.Show("对值进行限定,强制值:" + value);
            return value;
        }

        private static bool IsValidValue(object value)
        {
            MessageBox.Show("验证值是否通过,返回bool值,如果返回True表示严重通过,否则会以异常的形式暴露:" + value);
            return true;
        }

    }
    #endregion
    #region 解说注册属性依赖方法里的第三个参数
//    事实上,除了PropertyMetadata以外,常见的还有FrameworkPropertyMetadata,UIPropertyMetadata。
//    他们的继承关系是F->U->P。
//    其中以FrameworkPropertyMetadata参数最多,亦最为复杂。

//FrameworkPropertyMetadata的构造函数提供了很多重载,我们挑选最为复杂的重载来看它到底有哪些参数以及提供了哪些功能:
//    public FrameworkPropertyMetadata(object defaultValue,
//                                 FrameworkPropertyMetadataOptions flags,
//                                 PropertyChangedCallback propertyChangedCallback,
//                                 CoerceValueCallback coerceValueCallback,
//                                 bool isAnimationProhibited,
//                                 UpdateSourceTrigger defaultUpdateSourceTrigger);

//     其中第一个参数是默认值,最后两个参数分别是是否允许动画,
    //以及绑定时更新的策略(在Binding当中相信大家并不陌生),
    //这个不详细解释了。重点看一下里第三、四两个参数,两个 CallBack的委托。
    //结合前面Register的时候提到的ValidateValueCallback共组成三大”金刚“,
    //这三个Callback分别代表Validate(验证),PropertyChanged(变化通知)以及Coerce(强制)。
    //当然,作为 Metadata,FrameworkPropertyMetadata只是储存了该依赖属性的策略信息,
    //WPF属性系统会根据这些信息来提供功能并在适当的时机回调传入的delegate,
    //所以最重要的还是我们定义的这些方法,通过他们传入委托才能起到真正的作用。 
    #endregion
}




  

jquery 自定义事件绑定与触发 $.one与$.bind效果对比实例

New Document
  • kinglo
  • kinglo
  • 2011年02月21日 14:31
  • 6170

H5简解自定义事件

晚点整理
  • Angular_
  • Angular_
  • 2017年03月18日 15:34
  • 350

javascript自定义事件应用实例

js自定义事件 实现观察者模式,模块之间完全通过事件协作和传递信息。写了一个典型的观察者应用和一个游戏的框架代码,来演示自定义事件的使用...
  • ruangong1203
  • ruangong1203
  • 2016年09月08日 19:45
  • 2295

javascript事件,自定义事件,基于自定义事件的解耦

事件代理this是什么?this在事件代理中是"父节点",也就是为了省事,往上层绑定的节点。 和addEventListener中不同哦!addEventListener中的this就是发生事件的节点...
  • vctisildur
  • vctisildur
  • 2015年03月20日 21:20
  • 793

自定义事件类型

我们平时在操作dom时候经常会用到onclick,onmouseover等一系列浏览器特定行为的事件, 那么自定义事件,顾名思义,就是自己定义事件类型,自己定义事件处理函数,在合适的时候需要哪个事...
  • qq_32912651
  • qq_32912651
  • 2016年09月29日 12:30
  • 321

jquery 常用事件添加方式和自定义事件

$(function(){ for(var i=0; i
  • qwkxq
  • qwkxq
  • 2017年01月08日 18:16
  • 773

JavaScript实现自定义对象的自定义事件

前言: 大家都知道,在使用JavaScript可以很方便的使用addEventListener函数给DOM对象快速绑定一个或多个事件侦听器。 我们又如何在JavaScript的自定义对象中使用此方...
  • sunwanxin4
  • sunwanxin4
  • 2015年04月19日 11:05
  • 1469

java事件处理机制(自定义事件)【转】

java中的事件机制的参与者有3种角色:1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:...
  • xiaolang85
  • xiaolang85
  • 2010年02月22日 14:35
  • 6497

c#自定义事件(转)

namespace Test { class Program { static void Main(string[] args) ...
  • yhhoo
  • yhhoo
  • 2012年08月23日 21:56
  • 167

图学PowerBuilder---(自定义)事件

在PB中,对于很多控件而言,在开发窗口中默认列出的并不是所有该控件支持的事件,如DW的鼠标按下,抬起等事件并不在其默认事件中。但这并不表示其不支持,我们可以采用(自定义)方式来扩展其事件。这里所说的自...
  • anyqu
  • anyqu
  • 2012年06月05日 09:16
  • 1705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义事件。。转
举报原因:
原因补充:

(最多只允许输入30个字)