深入理解WPF中的命令系统
1. WPF中的弱事件模式实现
WPF提供了几种不同的弱事件模式实现。其中一种是针对INotifyPropertyChanged.PropertyChanged事件的(由System.ComponentModel.PropertyChangedEventManager提供),它主要用于数据绑定场景。此外,还有针对集合更改事件、焦点更改事件等的实现。
WeakEventManager这个名称源于它使用WeakReferences来引用监听器。如果你使用Reflector工具查看这个类,会发现在将监听器添加到列表时会使用WeakReference。
另外,Greg Schechter有一个略有不同的弱事件实现,他称之为弱委托。你可以查看 这里 了解更多信息。
2. 命令系统概述
命令基础设施为应用程序中发生有趣变化时执行操作提供了一种更高级的抽象。事件和属性是通知控件中发生有趣变化的两种方式,但命令提供了一种更松散耦合的抽象,将命令源与最终处理命令的目标分离开来。
如果一个常见操作需要通过多种输入手势(如键盘按键、鼠标点击或鼠标和键盘组合,像Ctrl + Click)或路由事件来执行,命令就可以处理这