自定义元素

来源:互联网 发布:平昌中学网络班怎么样 编辑:程序博客网 时间:2024/04/30 20:58

三步骤:

1、定义属性(事件)

 public static DependencyProperty ColorProperty;

  public static RoutedEvent ColorChangedEvent;



2、注册属性(事件)

   ColorProperty = DependencyProperty.Register("Color",typeof(Color),typeof(UserControl1),new FrameworkPropertyMetadata(new PropertyChangedCallback(OnColorChanged)));

 ColorChangedEvent = EventManager.RegisterRoutedEvent("ColorChanged",RoutingStrategy.Bubble,typeof(RoutedPropertyChangedEventHandler<Color>),typeof(UserControl1));



3、包装属性(事件)

  public Color Color
        {
            get
            {
                return (Color)GetValue(ColorProperty);
            }
            set
            {
                SetValue(ColorProperty,value);
            }
        }


 public event RoutedPropertyChangedEventHandler<Color> ColorChanged
        {
            add
            {
                AddHandler(ColorChangedEvent,value);
            }
            remove
            {
                RemoveHandler(ColorChangedEvent,value);
            }
        }


在OnColorChanged中可以引发事件

static void OnColorChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
        {
            UserControl1 _obj = (UserControl1)obj;
            Color _newColor = (Color)args.NewValue;
            _obj.Red = _newColor.R;
            _obj.Blue = _newColor.B;
            _obj.Green = _newColor.G;
            RoutedPropertyChangedEventArgs<Color> _eventArgs = new RoutedPropertyChangedEventArgs<Color>(_obj.Color,_newColor);
            _eventArgs.RoutedEvent = ColorChangedEvent;
            _obj.RaiseEvent(_eventArgs);
           
        }





合并资源字典:


/CustomControls是命名空间名称










例子:

















0 0
原创粉丝点击