我是一名 .Net、C# 和 WPF 程序员。Expression Blend 值得使用吗?

49

作为一名普通开发人员,使用Expression Blend与使用VS相比,是否会取得什么不同的成就?我对Expression Blend一无所知,第一眼看上去并不友好/易于学习。

你们怎么想?值得花时间学习并使用它,还是像我使用VS那样做呢?

谢谢!

编辑:我知道微软对这些工具有什么说法。我想知道的是,像我这样的开发人员是否尝试过Expression Blend,并发现它是浪费时间,还是您认为它是一个很好的工具,并停止使用VS来开发WPF GUI并转向EB。


1
我认为,如果稍微改进一下表述,这将是一个有趣的问题。本质上,它是“当你知道如何在VS中使用WPF GUI时,使用Expression Blend有什么用处”。 - CodesInChaos
8个回答

65

我有使用过它,但很少用。

我非常不喜欢XAML文件中添加的所有额外标记,并且更喜欢知道自己在做什么,而不是只是拖放项目。

我偶尔会使用它来提取控件的默认样式或模板,或者构建类似渐变、动画或路径等内容,然后将XAML复制/粘贴到我的项目中。

如果您喜欢拖放式编程,或者在一个足够大的团队中工作并有单独的UI和编码团队,那么这很不错。但其他情况下,我不会在独立开发时使用它,因为我必须维护它生成的XAML混乱代码。


1
说得好。我长时间尝试使用Expression Blend并阅读了一本据说是为程序员而不是设计师撰写的书籍。然而,不久之后我放弃了。对于Rachel描述的小任务,Expression Blend还可以。然而,当涉及到实际编程、绑定等时,它确实很糟糕。 - VitalyB
22
我同意Rachel所说的一切,但我发现Blend在两个方面表现出色,即动画和模板设计。我认为你无法在VS中查看任何类型的模板,但是在Blend中可以,这是他们所称的最佳选择。简单的动画可以在VS中完成,例如颜色和边距的变化,但是如果涉及到物体移动,特别是非直线运动,我会完全使用Blend。动画设计师允许很大的灵活性,并且可以自动播放动画。 - CodeWarrior
3
Blend 4是一款非常有价值的工具——它不仅支持拖放编码,还支持快速失败编码。如果你做了什么不起作用或者出现问题的事情,你通常可以在设计视图中捕获到它,甚至不需要启动应用程序。你还可以使用设计把手测试你的布局代码。最后,由于其坚实的模板和样式支持,它非常适合制作自定义控件。虽然它并不完美,但肯定比在VS中进行UI设计更好。可惜的是,Blend for VS是系列中一个带有许多问题的倒退,这使得许多使用4.5 .net WPF UI的开发人员感到困扰。 - cunningdave

38

我停止在VS中开发GUI并转到了Blend。一开始非常困惑,但现在很高兴花时间学习了Blend。大部分你可以在VS中完成的事情在Blend中也能做到,但是Blend使得它们更加容易(一旦你学会了如何使用)。当我向同事展示在Blend中如何做某些事情时,他们总是感到惊讶,因为简单的拖放可以取代相当多的打字。我真正喜欢Blend的是设计界面非常精确,而Visual Studio中的Cider WPF设计师经常会误导你或者欺骗你(总体而言就是一坨翔)。

Blend可以完成以下Visual Studio无法完成的任务:

  1. 创建和管理视觉状态。(我想你可以在VS中手动完成所有这些操作,但对于任何稍微复杂一点的内容都不切实际。)
  2. 提取和修改控件模板。
  3. 轻松使用行为(我无法想象在VS中手动完成FluidMoveBehavior)。
  4. 生成用于设计时使用的样本数据(减少软件组件之间的耦合度)。
  5. 所见即所得的动画编辑器。(在VS中必须运行应用程序才能查看动画;Blend提供实时预览。)
  6. 内置过渡效果和缓动函数。
  7. SketchFlow(非常适合制作可以向客户/利益相关者展示的高保真模拟图)。
  8. 所见即所得的路径编辑器(非常适合制作简单的矢量艺术图形)。
  9. 所见即所得的渐变编辑器。
  10. 从Photoshop和Illustrator导入艺术图形。

这些是能够让你的用户体验与其他自由职业者区别开来的东西。值得一提的是,我是一个没有设计经验的开发人员。


2
这篇博客介绍了视觉状态的一些背景知识以及在Blend中可以做些什么:http://blogs.msdn.com/b/expression/archive/2010/03/16/dynamic-layout-and-transitions-in-expression-blend-4.aspx。搜索“Blend Behaviors”应该会给你一些好的结果。如果你正在编写XAML而没有使用behaviors,那么你可能正在做一些次优化的事情。(不要被骗了:Blend Behaviors是免费的Blend SDK的一部分,不需要安装Blend。) - Mike Post
3
我认为这个答案最能反映我对回答问题的感觉。是的,Blend会使你的代码变得臃肿,所以如果你是一个代码纯洁主义者,Blend并不适合你。另一方面,WPF/SL/XAML/WinRT非常强大且掌控起来可能非常复杂。Blend比VS更好地帮助解决这个问题,但它需要非程序员学习的部分。你将牺牲一定程度的细粒度控制;是否适用取决于你的项目和工作环境。 - Alan McBee

16
  1. 有一个 编辑副本 选项,可以将默认样式提取到新样式中进行更改,因此编辑默认样式要容易得多。
  2. 我也发现编辑其他样式(如生成的内容)非常有用,因为您可以轻松地查看额外样式所控制的内容。
  3. 如果您正在进行动画制作,这会产生巨大影响,因为您在设计时可以实际看到其表现方式。
  4. 如果你的团队中有专门的设计师,那么这对他们来说更加友好,因为它类似于Photoshop / Flash编辑软件。
  5. 在我看来,如果您正在团队中工作,则只需要几种表达式混合就足够了。

1
不,我是一名自由开发者,所以我会是唯一使用它的人。我计划使用动画,但非常简单,只是为了使我的GUI与其他人有所区别。 - Ignacio Soler Garcia
2
当然可以不使用这个工具来完成工作,特别是如果你需要学习新的工具。还有一个优点是,我的Visual Studio经常因为巨大的XAML样式而崩溃,但Blend却没有这个问题,但这可能是ReSharper的问题。 - bartosz.lipinski
2
DataContext面板也非常有用,特别是在mvvm场景中,您可以拖放ViewModel属性或命令; - JackNova
在使用 XAML 时,我也经常遇到 Visual Studio 崩溃的情况(通常只是设计器崩溃,但有时整个程序都崩了)-- 我不使用 resharper。 - BrainSlugs83

14

我经常将Expression Blend和Visual Studio放在一起,当我需要处理Silverlight、WPF或Windows Phone项目时,两者之间来回切换。以下是我使用它们的主要原因:

我的应用程序中使用了很多动画和视觉状态。为了创建这些内容,您需要看到正在发生什么。在Visual Studio中,您无法(目前)做到这一点。几乎不可能手工编写真正的动画或视觉状态。

管理资源也是我使用Expression Blend的原因之一。在Blend中,创建新字典并移动资源非常容易。当您试图删除某个位置中正在使用的资源时,它甚至会向您发出通知。查找和编辑资源非常容易。单击一个按钮就可以将属性转换为资源,并准备在其他位置使用。

另外,我还经常使用样本数据。在创建表单和列表时,我想看到它们填充了数据。根据应用程序的状态,我通过手动创建、使用数据库的xml导出或从代码生成样本数据。

当使用样本数据时,数据绑定变得更加容易。只需将属性拖放到文本框上,您就有了一个绑定。通过数据绑定编辑器,您可以微调所需的绑定方式。


你是开发者还是设计师?嗯,最后我想只有在遇到问题或有空闲时间时才会花些时间去做。 - Ignacio Soler Garcia
1
我是一名开发者,虽然我有一些设计经验。 - Sorskoot

3
我认为有一个简单的方法可以回答你的问题...你只需要问自己,在Blend中你所做的任何事情的最终结果是什么?
答案是XAML。因此,如果这个工具为您生成XAML,为什么不一开始就直接使用XAML呢?XAML是人类可读的,易于理解和掌握,而且在VS Intellisense和Resharper代码完成之间,真的没有太多需要键入的内容。
你投资于掌握Blend的时间在掌握XAML方面会更好,因为Blend只是用于以视觉方式生成XAML的工具,因此直接使用XAML意味着更好地理解底层技术并完全控制您的代码,而不是依赖一些黑盒子工具来生成一些您并不真正理解的东西。
如果你投资所有的时间来掌握Blend,然后在半年内进入另一家公司,他们决定不使用Blend怎么办?如果你不知道XAML,现在你必须再投资更多的时间去学习它,如果你知道XAML,你将在任何环境下都很好,因为我真的怀疑有任何公司会强制那些需要与UI一起工作的程序员使用Blend而不允许他们直接使用XAML。
有几种情况下,Blend可以节省您很多时间(人们提到视觉状态和动画),因此在这些场合使用Blend肯定是不错的选择,但如果你正在开发典型的LOB应用程序,那里几乎没有什么东西会让你觉得你真的、真的需要Blend...

2
作为一名专业的开发人员,Expression Blend是非常宝贵的工具,它可以完成许多VS无法做到的事情。例如:
1.示例数据 2.故事板 3.远远优于DataTemplate的支持 4.更好的资源字典支持 5.更好的自定义控件工具支持 6.更好的XAML控制
如果你只是编辑非常基本的UI,则Blend对你没有任何用处,请坚持使用VS。Blend是用于设计和动画的,它是前端工具。

2
当Visual Studio更偏向于开发人员时,Expression Blend则更适合设计师。它有很多预定义的工具,可以生成大量代码并且易于使用(特别是动画、设计问题等)。因此,在Expression Blend中可以完成的所有事情都可以在Visual Studio中完成。我不确定反过来是否也成立。
官方网站上说:
Expression Blend、Visual Studio、Silverlight和.NET提供了市场上最具吸引力和无缝的设计和开发工作流程。快速迭代用户体验和核心架构,从最初的原型到完成的项目,快速演化您的想法。
Expression Blend的关键组件,包括Behaviors、Visual State Manager、转换效果和SketchFlow(Expression Blend 4仅在Expression Studio 4 Ultimate产品中包含SketchFlow),以及这种现代工作流程的速度和灵活性,挑战您突破界限,超越您认为可能的限制。
因此,取决于您所处的位置:如果您主要在应用程序的UI层工作,则在Expression Blend中可能会找到许多有用的东西;否则,如果您主要在后台工作,则Visual Studio是您的选择。
更新:
还请查看以下SO线程:WPF应用程序:Visual Studio vs. Expression Blend

你在使用它吗?你是开发者还是设计师? - Ignacio Soler Garcia
2
我是一名开发人员,但当我在WPF项目的UI部分工作时,我有点“作弊”:)我应用了一些效果,制作了一些渐变、动画等等,然后只需将生成的代码复制到Visual Studio中即可。 - Samich

-1

混合工具具有多种用途。

我认为它主要用于:

1.在Silverlight中构建动画(故事板)

2.创建WPF/SL/WP XAML布局

如果您想创建一些动画Silverlight/一些数据绑定的Silverlight应用程序,我的答案是肯定的。在尝试使用Adobe Edge 7天并长期使用Flash 4、MX2004、Flash 5之后,我得出了这个结论。

要创建一个花哨的动画,Expression Blend仍然比Adobe Edge更好,并且与Adobe Flash相当。

而且,您可以编写熟悉的编程语言来控制所有内容,就像Flash Action Script一样。

在我看来,Action Script在中大型项目上非常混乱,非常难以调试/维护。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接