2009年6月16日星期二

越来越觉得WPF是一个伟大的创造~

越来越这样觉得的~
WPF创造了一个新的世界,从理念到实现,就像.net平台一样~实在是太华丽了~
简单的列举几个我现在已经发现的东东:
1. WPF 本身就是一个MVC~而且是一个很完美的便捷的MVC。
WPF的Best Practice是采用Xaml 写界面,然后后台代码处理逻辑,然而Xaml本身具有相当的逻辑实现的能力,Xaml里甚至可以通过合适的方式嵌入.net的对象,因此几乎是可以把所有的界面相关的内容放到到Xaml里面,对应的后台CS仅仅处理业务逻辑。
WPF内置强大的Data Binding功能,因此,可以及其容易的把一个单个对象,或者对象集合绑定到WPF界面上。
因此,WPF可以采用Xaml描写View(就像写HTML一样简单,甚至比HTML+CSS+JavaScript还简单),.net编写Model,然后通过数据绑定,实现View和Model的同步(双向或者单向),Xaml后台代码实现Controller~
可以说WPF的架构,从一开始就是基于MVC实现的。
由于传统的界面体系的设计和架构,Dev总是倾向于把业务逻辑混杂到界面逻辑里,例如:用户单击了某按钮,然后按钮事件的响应代码中总会有一个或多个从UI界面获取数据的逻辑、更新Model的逻辑、把Model的数据同步回界面的逻辑。然而到了WPF,这些都不存在了。

2.逻辑和表现彻底的分离
传统的界面体系里面,Control总是在负责界面逻辑的同时,还要负责界面的渲染和外观。
也就是说,如果希望某个内容在界面上换个表现方式,例如:把一个CheckBox换成两个RadioButton,即使两种表现方式具有相同的逻辑,Dev也不得不更新Control。
而在WPF中,这一切都过去了~WPF的Control和传统意义上的Control完全不是一个概念~WPF中的Control仅仅包含了原来Control的逻辑部分,比如Button,就是指可以点击的一个界面对象,至于这个Button长什么样,这不是Button的职责。
Control会通过一个叫做Control Template的技术,把Visual和Control给关联上。

3.强大的布局系统
虽然布局系统在Windows  Form中已经引入,但是还是处于一个次要的地位,WIndows Form的界面布局还是以绝对坐标为基础的,所以所有的Control都有Position属性。
然而到了WPF中~这个体系被彻底的推翻了~WPF主流的布局是采用Panel+LayoutEngine,即如何去放置控件,将不再由控件自己去绝对控制,而是变为了父容器的职责。例如最常见的StackPanel,就负责把自己的子成员排成一行或者一列。
通过这种布局系统,Designer在设计UI时很多情况下不必再对界面的坐标精打细算~一段很简短的Xaml就能实现一个比较复杂的UI出来。

WPF 还有很多很多我没有来得及发现的优点,不过随着我理解的深入,越来越觉得WPF是一个革命性的创造~

TimNew
------------
Release you passion
To Realize you potential
---------------------------------
Tip Of the Day:
Lucius Annaeus Seneca  - "No man was ever wise by chance."

Posted via email from timnew's posterous

没有评论:

发表评论