WPF和Silverlight丰富的表现能力意味着像我这样的开发人员现在会更频繁地与平面设计师密切合作,就像我下一个项目中的情况一样.
有没有人有任何提示和经验(从两个角度来看)让这个更顺利?
例如,当我最近向设计师提到源代码控制时,我很快就被告知你无法获取控制图形,图像等,所以这是浪费时间.所以我回答:好吧,但是,WPF/Silverlight中的XAML文件怎么样?
Scott Hanselman在播客中谈到了这个话题,但他更多地关注这些工具,而我对通信问题/方面更感兴趣.
我发现的一件事是,作为开发人员设计代码的方式会极大地影响设计人员可以用它做什么.通常你从网上下载一个Silverlight或WPF示例应用程序并在Blend中打开它,只是为了让Blend崩溃,因为代码在设计器内运行不好.如果它没有崩溃,它很少看起来像正在运行的应用程序.
我最近在Tech Ed Australia和新西兰发表了一篇关于可以应用于"可设计性设计"的技术的演讲.包括一个简短的列表:
编写可以利用数据绑定的代码.Model-View-ViewModel或表示模式非常适合这种情况.
为您的服务依赖项提供"设计时"存根.如果您要绑定的类进行Web服务调用,请务必使用存根类替换Web服务客户端,该存根类返回设计器在内部混合中使用的"虚拟数据".这可以通过IoC和依赖注入轻松完成,如果HtmlPage.IsEnabled == false则注入一个实现.
通过使用数据绑定,您可以限制XAML文件中的"命名元素"的数量.如果您编写了大量代码,最后将C#代码与命名元素(如txtName或txtAddress)相结合,使设计人员可以轻松"搞砸".
使用命令模式而不是单击事件处理程序后面的代码.通过从处理程序中松散地耦合事件的调用者,您可以使用较少的命名元素,并且您可以让设计者自由选择Button或Menu Item来调用特定命令.
在Blend中测试你的代码!即使您认为自己是纯粹的开发人员,您也应该通过工具测试您的代码是否可以使用,并努力在设计时获得最佳体验.有些人认为工具不应该影响你的软件设计,正如有人抱怨"可测试性设计",并且制定软件设计决策只是为了使代码更容易测试.我认为这是一件很聪明的事情,也是你获得一些真正的设计师 - 开发人员工作流程的唯一方法.
其他提示是从小做起.如果您的设计人员不熟悉XAML,WPF和Silverlight,请首先将他们介绍给项目团队,让他们在他们熟悉的工具中进行一些基本设计.让他们在Adobe Illustrator中执行一些按钮和插图,并将其导出到XAML,并向他们展示如何直接利用他们的设计资产.继续介绍越来越多,希望他们感兴趣,并希望切换到Blend.这是一个相当学习的曲线,但它确实值得!
祝好运!
PS:我已经在我的博客http://jonas.follesoe.no上写了关于模式和设计友好代码的文章.您还可以找到我的Tech Ed演讲视频录制的链接,以及许多有关该主题的进一步阅读的链接.
我花了4个月的时间与一个与设计师密切合作的项目,他仍然没有掌握CVS的基本概念(这不是我选择的源控制系统).我在这里谈论模板文件,JavaScript和CSS.他并不愚蠢,只是其中一件让他的工作变得更加艰难的事情,所以他拒绝全力以赴.
在我的情况下,我必须真正锤回家,几乎所有的JavaScript都依赖于标记,当他将纯CSS,基于DIV的布局更改为基于表格的布局而不告诉我,然后我的所有JS都将继续打破.
通常在项目过程中,我自己和设计师(我相处得很好并且在工作之外踢足球)在我们各自的职责上进行了非常激烈的交流.如果我不能很好地了解他,只是通过这些交流,那么我认为这会创造一个难以忍受的工作环境.因此,我认为您在两者之间以及某种经理或项目主管之间建立起来非常重要,这与项目期间双方的期望完全相同.
在我的情况下,最近几乎没有问题,因为CVS的情况已经被整理出来,以及他不能随时改变标记的想法.设计师不是尝试创建模板文件并直接处理它们,而是只处理静态文件,我有责任将它们插入模板文件中.
这都是关于沟通和双方的一点妥协.
这可能有点偏离主题(我专门回答你关于源代码控制和图形的问题),但你可以将二进制数据(图像等)放入源代码控制中(在我看来很多情况下应该) - - 它们只占用更多磁盘空间,您无法使用差异视图以任何有意义的方式分析已更改的内容,但您获得的是提交消息的历史记录,记录每个修订,回滚功能和轻松归档的能力(用SVN术语标记修订版)所有属于特定版本/版本的文件(无论是可视资产,文档,源代码等).您的构建系统也可以更轻松地从源代码控制中获取构建特定版本软件所需的所有内容.
让平面设计师参与早期设计和架构会议.
你想让他们参与揭示错位的假设,并建立一种合作的模式,而不是在墙上来回扔东西.
最初,设想专业设计人员可以在Expression Blend中工作,开发人员可以在Visual Studio中工作,对单个共享源文件集进行更改.虽然它确实可以这样做(只要你小心定期检查你没有破坏其他开发人员或设计工具所期望的东西),开发人员社区的许多成员,包括微软内部的一些成员,都发现了保持Blend和Visual Studio项目活动的优势分离 - 甚至可以将精心重构的Blend生成的Xaml版本手动剪切并粘贴到"官方"VStudio项目源中,而不是让设计人员和开发人员直接在单个操作上运行共享代码库.微软'
Real_World_WPF_DesignersAndDevelopersWorkingTogether
获得的主要经验教训之一是,您无法与设计人员和开发人员合作,他们完全不了解彼此的域名.开发人员需要熟悉Blend,他们可以为设计人员提供有用的UI shell供设计师进行装饰,以及设计师可以设计交互性的有用数据"存根",设计师需要充分了解他们不喜欢的开发问题不做删除控件并用自定义视觉元素替换它们 - 没有意识到它们打破了与原始控件相关的所有功能.