WPF中使用的模式

时间:2009-11-20 13:21:51

标签: wpf chain-of-responsibility design-patterns

我已经越来越多地参与WPF大约一年了。很多事情都是新的,有时很难让我的脑袋缠绕它。

与此同时,我正在重读“GOF设计模式”一书。

有几次我会停在中间因为我会意识到某个模式是某些WPF功能中使用的模式。每当这种认识到达我的时候,我觉得我对相关WPF原则的理解只是迈出了一大步。这有点像aha-effect。

我也意识到我更容易理解Prism,因为文档在解释所涉及的模式方面做得非常出色。

所以这是我的“问题”(更像是努力):

  

为了帮助我们所有人了解   如果有人,WPF会更好   谁也“发现”了一个设计模式   WPF可以给出一个简短的解释。

我找到的一个非常明显的例子是路由事件:

  

如果孩子检测到某个事件   控制,没有处理程序   指定,它传递给它   父母等等,直到最后   处理或不再找到父母。

     

假设我们在按钮上有图像   就在StackPanel里面   在窗户内。如果用户点击   图像,事件将是   由它处理(如果处理代码有   被指定)或“泡沫”直到   其中一个控件处理它。所以   每个控件都有机会   按此顺序反应。

     
      
  1. 图像
  2.   
  3. 按钮
  4.   
  5. 的StackPanel
  6.   
  7. Window
  8.         

    一旦控件处理它,   冒泡会停止。

         

    这是一个简短的解释,对于a   更准确的一个咨询WPF   文献

         

    这种功能代表着   “Chain of Responsibility   设计模式“说明,如果   他们是一个请求,它通过了   沿着责任链给予   其中的每个对象都有机会处理   它。请求的发件人没有   想法谁将处理它确保   脱钩。为了更彻底   解释请点击链接。

这里的目的仅仅是为了展示这个(看似已有10多年历史)的想法如何进入我们当前的技术并提供另一种方式来看待它。

我认为这对于一个开始是足够的,并希望在这里收集更多的相似之处。

干杯,托尔斯滕

2 个答案:

答案 0 :(得分:0)

我不认为它是WPF特有的,但观察者设计模式似乎是.Net和WPF中所有事件处理的基础。

观察者设计模式被描述为“定义对象之间的一对多依赖关系,这样当一个对象改变状态时,其所有依赖关系都会被自动通知和更新。”在.Net中使用+ =运算符,您可以订阅状态的这种更改。随后您使用 - =运算符取消订阅。

答案 1 :(得分:-1)

我认为CommandBindings对我的开发方式非常重要和基础。