自定义元素
三步骤:
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是命名空间名称
例子: