本系列计划读《深入浅出WPF》(刘铁猛)自己写的笔记而已。
如有不对的地方,没关系。就像我们写的代码一样,永远有Bug,永远在Debug。
GUI程序员手中的开发工具经理了Win32 API->MFC->ActiveX/COM/Visual Basic ->Windows Form -> Windows Presentation Foundation (WPF).
WPF: 专门用来写程序表示层的技术和工具。当今的程序,除了一些非常小巧的使用工具外,大部分程序都是多层架构的程序。一提到多层架构,一般至少包含3层:数据层,业务逻辑层和表示层。
WPF的功能就是用来编写英勇程序的表示层,至于业务逻辑层和数据层的开发也有专门的新技术。比如业务逻辑层的新技术WCF(Windows Communicaion Foundation)和WF(Windows Workflow Foundation)。微软的表示层开发工具也不少,如WPF,Windows Form,ASP.Net, Silverlight等。
我们原来的设计理念:事件-》订阅-》事件处理器,这些关系交织在一起,尽管可以使用MVC(Model-View-Controller),MVP(Model->View->Presenter)等设计模式,但一不小心就会使界面逻辑和业务逻辑纠缠在一起,造成代码复杂难懂,Bug难以排除。而WPF技术则是微软在开发理念上的一次升级--由事件驱动变为数据驱动。
事件驱动:数据是静态的,被动的;界面控件是主动,界面逻辑与业务逻辑之间的桥梁是事件;
数据驱动:当数据发生变化时,会主动通知界面控件,推动控件展示最新的数据;同时,用户对控件的操作会直接送达数据,就好像控件是透明的。
WPF开发理念符合哲学原理:内容(数据)决定形式(界面)。