大约一年来,我一直在更多地参与 WPF。很多东西都是新的,有时我很难理解它。
同时,我正在重读 GOF 设计模式这本书。
有几次我会在中间停下来,因为我会意识到某种模式正是某些 WPF 功能中使用的模式。每当有这样的认识时,我都觉得自己对相关WPF原理的理解有了很大的飞跃。这有点像啊哈效应。
例如,我还意识到我更容易理解 Prism,因为文档在解释所涉及的模式方面做得非常好。
所以这是我的“问题”(更像是一种努力):
为了帮助我们所有人更好地理解 WPF,如果任何人也“发现”了 WPF 中的设计模式可以给出一个简短的解释,那就太好了。
我发现的一个非常明显的例子是路由事件:
如果子控件检测到事件并且没有指定处理程序,它将把它传递给它的父控件,依此类推,直到它最终被处理或不再找到父控件。
假设我们在窗口内的 StackPanel 内的按钮上有一个图像。如果用户单击图像,则事件将由它处理(如果已指定处理代码)或“冒泡”直到其中一个控件处理它为止。因此,每个控件将有机会按此顺序做出反应。
- 图片
- 按钮
- 堆栈面板
- 窗户
一旦控件处理它,冒泡就会停止。
这是简短的解释,更准确的解释请参阅 WPF 文献。
这种功能代表了“责任链 设计模式”,它指出,如果它们是一个请求,它会沿着责任链传递,给其中的每个对象一个处理它的机会。请求的发送者不知道谁来处理它,这确保了解耦。有关更详尽的解释,请点击链接。
这里的目的只是为了展示这个(看似古老的 10 多年)想法如何进入我们当前的技术,并提供另一种看待它的方式。
我认为这足以开始,并希望在这里收集更多的相似之处。
干杯,托尔斯滕