WPF给我们带来的不只是一个开发平台,更重要的是一种开发过程和设计理念。以下的文字不是原文的翻译,是看完 New Iteration 后的感想,如有错误之处,麻烦各位朋友指正。
wpf将原来的一个开发过程分离成由两个角色组成的迭代开发过程。原来的开发过程的弊端是,界面和逻辑耦合在一起,当想要采用新的用户界面时,必须重新设计,有时甚至修改底层的逻辑代码。界面开发和逻辑开发的交流中断,开发过程是一个"tweak-compile-run"的过程。而使用wpf的迭代开发过程,developer负责整个项目的规划,逻辑的实现,尽量考虑界面的调用问题,将对外的接口封装成事件和命令;而designer在blend中进行界面的设计和组织。在整个项目的开发过程中,两者交流频繁,是一个"nudge-nudge-nudge"的过程。交流的工具就是xaml。有个有趣的比喻,将整个过程比喻成打乒乓球,设计的内容是乒乓球,developer和designer是两个选手,乒乓球的来回过程就是developer和designer交流的过程。
能实现这种交流的前提是,developer和designer都必须熟悉xaml,designer通过工具或直接编码创建xaml文件,开发者通过xaml文件了解设计意图,设计出方便设计者使用的接口。designer可以直接使用这些接口组织用户相应。
这样的开发过程可以使设计者着重于界面的实现,而使开发者着重于逻辑的实现。当有新的用户体验,或者采用另一种不同的界面的需求来到时,designer可以从容的开发,而developer完成的工作不会被丝毫的影响,因为当初的设计就满足了designer调用的需要。但是在这种开发过程中也有很多developer面临的问题:第一就是事件的相应代码的位置问题,如果响应方法的注册在cs文件中,designer就不能看到响应方法,就不能将响应方法绑定在其他的事件中,所以developer需要尽可能的将响应方法写在xaml中(如果有xaml文件)。第二developer要确保工程自始自终能用blend打开。一个场景中的某个显示元素如果在xaml中没有找到自己的DataContext(它的DataContext可能被developer在cs文件中指定了),这个元素显示就会有问题,有时整个场景都会显示不出来。这是非常普遍的问题。如果出现了这样的问题designer就会从开发过程中退出。
wpf将原来的一个开发过程分离成由两个角色组成的迭代开发过程。原来的开发过程的弊端是,界面和逻辑耦合在一起,当想要采用新的用户界面时,必须重新设计,有时甚至修改底层的逻辑代码。界面开发和逻辑开发的交流中断,开发过程是一个"tweak-compile-run"的过程。而使用wpf的迭代开发过程,developer负责整个项目的规划,逻辑的实现,尽量考虑界面的调用问题,将对外的接口封装成事件和命令;而designer在blend中进行界面的设计和组织。在整个项目的开发过程中,两者交流频繁,是一个"nudge-nudge-nudge"的过程。交流的工具就是xaml。有个有趣的比喻,将整个过程比喻成打乒乓球,设计的内容是乒乓球,developer和designer是两个选手,乒乓球的来回过程就是developer和designer交流的过程。
能实现这种交流的前提是,developer和designer都必须熟悉xaml,designer通过工具或直接编码创建xaml文件,开发者通过xaml文件了解设计意图,设计出方便设计者使用的接口。designer可以直接使用这些接口组织用户相应。
这样的开发过程可以使设计者着重于界面的实现,而使开发者着重于逻辑的实现。当有新的用户体验,或者采用另一种不同的界面的需求来到时,designer可以从容的开发,而developer完成的工作不会被丝毫的影响,因为当初的设计就满足了designer调用的需要。但是在这种开发过程中也有很多developer面临的问题:第一就是事件的相应代码的位置问题,如果响应方法的注册在cs文件中,designer就不能看到响应方法,就不能将响应方法绑定在其他的事件中,所以developer需要尽可能的将响应方法写在xaml中(如果有xaml文件)。第二developer要确保工程自始自终能用blend打开。一个场景中的某个显示元素如果在xaml中没有找到自己的DataContext(它的DataContext可能被developer在cs文件中指定了),这个元素显示就会有问题,有时整个场景都会显示不出来。这是非常普遍的问题。如果出现了这样的问题designer就会从开发过程中退出。
从上图可以看出,在开发的第一阶段,即第一个虚框,Designer设计界面和Developer通过Xaml了解界面功能。在第二阶段,Developer开发底层逻辑和接口,同时又要确保整个工程能用blend打开,这样Designer可以使用底层接口设计用户交互功能。由于项目没有完成或者有新的需求,过程又回到了第一阶段。可见开发WPF应用的整个过程是Designer和Developer相互交流迭代的过程,又是两个阶段循环迭代的过程。