WPF界面设计项目总结
1.项目总体过程
最近在做一个校线的小工具,Button Lable TextBox CheckBox ComboBox 等小控件一组合,再用WPF中MVVM新的架构,在ViewModel中实现背后的控制逻辑,一个小工具的雏形就OK了。开发调试后,Beta版本发布。
一周后用户普遍反映,界面不友好,使用不方便,“我的操作完成状态我也不知道”,老工具的啥啥功能怎么没了?加上工具对于老环境支持度不好,新工具的推广效果很差。
认真反思后,在两个多月后,我决定对新工具根据用户反馈,大力调整,除了尽量保留老工具所有的功能外,尽量把用户的交互做好,让用户真正使用起来方便,不需要指导书。
2. 项目过程难题
做完后,项目推广失败,总结了下,主要有以下两个方面的原因。
2.1 对环境的支持不完善
当时项目曲折,自己感觉是个小项目,就没有写项目程序设计书,结果就把环境的支持考虑到不多,使用小工具,需要升级环境,结果很少有用户主动去升级环境,最后拖累两个月的推广。
两个月后,这个问题,我用了半天就搞定了。
2.2 与用户交互的不友好
我的小工具的核心缺陷,就是没有对测试数据的实时打印,让用户可以很方便的查看到自己操作的结果。说的更简单点,就是怎么清晰的把数据打印在操作界面上,并提供必要的提示。
这个问题困扰了我一个多星期。
3.WPF界面预备知识
3.1 界面设计
界面设计是非常吸引用户的一个方面。好的界面设计,一方面提高用户使用的效率,用户的认可度,同时,另一方面也可以减少开发人员的维护工作。
好的界面设计,是建立在用户对业务的理解上,对用户习惯的把握上。
3.2 布局控件介绍
WPF的布局控件都在System.Windows.Controls.Panel这个基类下面,使用 WPF提供的各种控件在WPF应用程序中界面进行布局,同时对各种子控件(如按钮、文本框,下拉框等)进行排列组合。
3.3 Grid控件
Grid顾名思义就是“网格”,它的子控件被放在一个一个实现定义好的小格子里面,整齐配列。 Grid和其他各个Panel比较起来,功能最多也最为复杂。
4.用户交互之我的解决思路
其实给我解决问题的时间很少,最多两天的时间,我不断的翻阅资料,并参考了几个老工具的界面方式。
4.1 阶段一 寻找和老工具的相类似的控件直接替换
老工具使用的是WCF写的,使用的控件是ListView,在WPF中,需要绑定行、列的数据,这个地方比较难懂,利用周末的时间,我终于写出来一个Demo,结果还是感觉不太好用(网上的教程太少)。
4.2 阶段二 使用网络上教程很多的DataGrid 控件实现
为了让控件使用更容易上手,我选择了大家都在使用的DataGrid控件,网络上的教程很多,特别是英文的版本,非常详细(这一次,我又深深感受到了学好英文的巨大优势,让自己的编程能力和世界接轨。。。。),自己学习了一上午,控件的使用基本搞定,准备移植到工具当中时,仔细思考了下,同时又和同事讨论了下,发现这个控件对于很多列数据的显示不太适合,因为他的每一列都和程序中的属性绑定,我有100多列,我就要定义一百多的属性,感觉好傻。。。
4.3 阶段三 放弃带列表的打印,该日志打印,使用外部DLL—log4net
项目越来越紧张,我直接找了一个开源的LOG的实现,结果使用起来了也很费力,一般的例子都没有直接绑定到界面上显示,而是在后台记录日志。正好其他项目有使用RichTextBox的例子,我直接放弃了log4Net。
4.4 阶段四 使用简单的 TextBox、RichTextBox
之前的项目使用的RichTextBox是使用的WinForm,WPF对RichTextBox进行了重写,很多属性和方法都变了,对这个我又研究了一天,终于搞定。
5. 校线工具过程改进
5.1 与串口控制交付项目的比较
校线工具比串口交付项目复杂度要低,然而这个项目多了界面设计,这是个全新的领域,对我来说。
界面设计就要首先考虑用户的使用习惯,做好初步的规划。这个也属于项目总体设计的一部分。
“不仅知道开头,知道如何结束同样也非常重要。”
5.2 总体流程控制掌握
项目遇到难题如何解决?求助?最直接的是,还是提前提高自己的技术能力,不论什么时候。