一:自定义属性
Step 1 : 声明公共属性;
Step 2 : 注册依赖属性;
二:自定义事件
Step 1 : 声明公共事件;
Step 2 : 注册事件;
Step 3 : 依赖属性声明回调PropertyChangedCallback(OnPropertyChanged),这里OnPropertyChanged是静态方法;
Step 4 : 实现方法 public void OnPropertyChanged(object oldValue,object newValue),new 一个RoutedPropertyChangedEventArgs<T>,并为new出来的对象的RoutedEvent附上注册的事件;
Step 5 : 实现方法 public static void OnPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e),根据e取得新旧值并调用public void OnPropertyChanged(object oldValue,object newValue);
三:自定义命令
Step 1 : 声明静态只读命令;
Step 2 : 实现公共静态空方法Excute(object sender,ExecutedRoutedEventArgs e)和CanExecute(object sender, CanExecuteRoutedEventArgs e);
Step 3 : 在静态函数(必定会执行的代码段,一定会为控件注册上命令)中为自定义控件注册命令,CommandManager.RegisterClassCommandBinding(typeof(UserControl), new CommandBinding(Command, Command_Executed, Command_CanExecute));