自定义事件。。转

转载 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
}




  

转Asp.net 用户控件添加自定义事件

转Asp.net 用户控件添加自定义事件 对于用户控件的使用有这样的特点。就是,当我们要求一个用户控件要实现特定的功能的时候,他可以在整个网站里面的页面上任意拖拽。但是,他的功能相对固定,也就是说在...

wxWidgets自定义的窗口事件--转帖

经常会碰到自定义窗口需要自己处理OnKeyDown、OnKeyUp、OnChar等事件,单有些时候接受不正常,这个时候就需要在自定义窗口中使用wxWANTS_CHARS 这个style,附上自己的例子...

Flex4中的自定义事件(转)

1.方式一:通过继承Event类编写Flex4的自定义事件 下面我们来做一个例子,实现这样的功能:监控TextInput的输入,通过监控输入的内容,触发不同的自定义事件。 我们先来写这个自定义事件...

javascript之自定义事件

  • 2012年08月27日 09:48
  • 1KB
  • 下载

百度地图API自定义覆盖物与添加点击事件

本文适合零基础百度地图API开发者 效果图1 效果图2 直接上代码;另注:code上面很多是钓鱼君自己写的动态的数据,所以不能拿过去马上可以用,本文只提供借鉴,不保证100%原创,但功能是...
  • corey_jk
  • corey_jk
  • 2015年12月21日 15:06
  • 15762

cocos2dx-lua 自定义事件类

  • 2016年12月28日 18:10
  • 2KB
  • 下载

Android事件传递机制详解(嵌套自定义View示例)

一、概述   自定义View如果嵌套了自定义View,可能简单写一个onTouchEvent处理事件已经不能解决你的需要。简单举个例子:   你自定义了一个容器View,简称为父View,在这里监听点...

自定义事件选择器

  • 2017年08月23日 09:59
  • 4.19MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义事件。。转
举报原因:
原因补充:

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