WPF是开发业务线用户界面的不错选择吗?

时间:2010-03-20 21:13:07

标签: c# wpf winforms

我们正在讨论我们未来的Windows UI开发应该是WinForms还是WPF。你们有些人做出这个决定了吗?我们的大多数应用程序都是LOB应用程序,我不确定WPF对这些类型的应用程序有什么明显的压倒性优势。但是,我对WPF的了解有限。我也有点担心WPF将在未来几年流行,然后微软会厌倦它并推动其他东西。我想有一个反对意见的事实是Visual Studio 2010是一个WPF应用程序。

感谢。

11 个答案:

答案 0 :(得分:13)

这里有很多因素需要考虑。

不选择WPF的原因:

  • 它目前对常见的LOB控件(如日期选择器,数字输入窗口小部件等)的支持少于WinForms,尽管这通过WPF工具包,WPF 4和第三方控件供应商得到了改进。
  • 该工具不适合亲吻Windows窗体设计师的靴子。 (虽然公平地说,这部分是因为工具必须应对更复杂的构建视图的方式。而且Blend肯定会到达那里。)
  • 与Windows窗体完全不同的心理模型。要从WPF中获得真正的好处,您需要以与您习惯的方式完全不同的方式思考。因此,可能存在实质性的学习曲线 - 不仅仅是学习技术,还包括内化习语和模式(尽管现在围绕惯用WPF的社区资源比以前多得多)。

选择WPF的原因:

  • 体面的建筑支持。 WPF(如果你做对了)内置了很好的代码和UI分离,使WPF应用程序更容易测试和发展。
  • 更大的灵活性。例如,如果您需要一个简单的地图显示,您可以在几个小时内从ListBox构建它,而不必从头开始研究和购买第三方组件或编写地图控件。简单的数据可视化是WPF的一个杀手级功能。
  • WinForms是一个死胡同。它不会看到微软的任何增强功能,并且随着WinForms市场的饱和,控制厂商已经开始转向WPF。
  • 您的大部分WPF体验都可以移植到Silverlight,它可以让您灵活地将应用程序带到浏览器和手机上,并且(b)让您更有信心微软不会失去兴趣 - 甚至如果他们对WPF感到“厌倦”,他们就会对Silverlight表现出非常强烈的承诺。

就个人而言,如果我现在开始使用Windows桌面应用程序,我会选择WPF。但是,我已经爬上了学习曲线。对于没有WPF经验的团队来说,接受它的成本必须比对我来说更重要。

答案 1 :(得分:11)

要记住的一件事是Silverlight。是否有可能您希望将应用程序编写为将来从浏览器运行,甚至可能从Windows Phone 7设备运行?虽然Silverlight和WPF并不完全相同,但它们非常相似。这将是我支持WPF的主要“面向未来”的论点。

我个人喜欢WPF的组合模型 - 以及表示UI的声明方式,以及比WinForms更好的布局系统。并不是说我是一个UI人,真的。

答案 2 :(得分:5)

WPF对我来说是一个改变游戏规则的人。我公司的旗舰应用程序是一个WinForms程序,其UI在运行时从元数据动态构建。总而言之,大约需要六个月的努力才能让用户界面显得稳定,更不用说有吸引力了。还有一些我无法解决的错误,主要是因为UI代码无可救药地且不可避免地与数据模型代码交织在一起。并且不要让我开始使用窗口把手。

现在该系统已投入生产一年左右,客户向我提出的要求是“我们希望能够通过拖放重新排序此屏幕上的信息”,“我们能否”获取此信息以显示在此选项卡的此部分的网格中?“而且 - 我的最爱 - “我们可以获得拼写检查和自动文字吗?”这些请求进入了一个非常长的积压工作。

我花了相当多的时间来弄清楚如何重构应用程序的设计,以便它可以支持WPF UI。 (实际上,这是一个非常轻微的轻描淡写。我一直在努力解决这个问题,一年半之后,一旦我打破了WPF的书籍,我才开始关注它从MVVM工作并学习MVVM。)一旦我做到了,结果就是壮观的。

代码更简单。调试的逻辑要少得多。 UI中的所有内容都很多更快,这很重要,因为这首先是桌面应用程序的全部原因是我们需要一个响应非常快的UI。我的程序可以创建数以千计的UI控件而无需担心窗口句柄。我能够轻松改变程序的外观和感觉是令人jaw目结舌的。

(例如:UI为DataRow提供了各种模板。由于给定的屏幕上可以有几十行,而且光标很小,因此对用户来说很有用一眼就能看出光标所在的行。我花了十分钟时间来实现这些样式,现在我的应用程序中的所有可视化代价都可以使用。这比我估计估计的时间要少

有缺点吗?佩林女士喜欢说,你打赌。浏览我提出的一些问题 - 关于how a no-op value converter changed the behavior of data binding的问题很好。整个调试绑定的整个方法是非常令人沮丧的,特别是因为它很容易出现绑定错误,甚至不知道它。 (我现在始终将我的输出窗口保留在屏幕上,这样如果在我测试时有任何绑定错误,那么记录的消息的移动将引起我的注意。)能够获得它会很好窗口抛出XamlParseException时的实际堆栈跟踪。不要开始说话,我可以整晚说话。

和工具! Visual Studio用于构建WPF UI的可视化工具对我来说完全没用。我有混合,并用它来重新模板控件,但总的来说,我发现使用Blend就像试图通过充满轮毂盖和打包线的沼泽慢跑。如果你所知道的是Blend,我确定它真的很棒,但如果你首先学到的是WPF对象模型和XAML,那么Blend的行为是非常神秘的。 Visual Studio和Kaxaml中的XML编辑器让我感到难过,而Resharper的WPF功能就是说,正在进行中。我非常喜欢WinForms的工具,这些工具使我能够顺利快速地构建缓慢,古怪且不可维护的乌鸦代码嵌套,而这些代码我将厌倦。

答案 3 :(得分:1)

WPF似乎将取代Winforms,至少在Windows Mobile设备上取代,未来的开发主要围绕Silverlight(WPF衍生产品)和XNA。

在开放市场中,如果您想让自己对更广泛的招聘市场具有吸引力,那么覆盖WPF是有道理的。

答案 4 :(得分:1)

我自己也在想。但事实上VS2010,就像你说的那样,在WPF中大量使用这个事实告诉我,微软正在试图告诉全世界它不仅仅是另一种MS时尚,而是它会保持一段时间。

答案 5 :(得分:1)

我认为MS正在发出一个明确的信息,即WPF和Silverlight是现在和未来。 Winforms PM已经说了很多。此外,预计WPF和Silverlight将在未来融合。

我们在6个月前在办公室经历了同样的困境。我们开始使用大型LOB应用程序,团队中没有人在WPF或Winforms中有很多经验。在这种情况下,我们无法找到与Winforms合作的压倒性理由,我们认为WPF为我们提供了更清晰的关注点分离。我们决定使用WPF并使用PRISM作为应用程序框架。 6个月后,我认为我们做出了正确的选择。

答案 6 :(得分:1)

了解两者,我真的希望WPF是未来。 Windows窗体有令人难以置信的痛点,例如关于数据绑定,它几乎是很多现有内容的.NET薄膜。当我不得不调试像BindingSource这样的类时,它吓坏了我。现在,我不知道WPF课程是如何看待内部的,但微软必然会在2001年到2006年之间学到一些东西。

因为

我喜欢WPF
  • 定型
  • 数据模板
  • 出色的一流数据绑定支持
  • 声明式UI设置
  • atached properties
  • ...

我只能希望微软能够在内部更多地使用这种UI技术,从而减少其主要与性能有关的弱点。 WPF要求很高。 在VS2010中,我希望看到设计师能够展示UI的强大功能(Beta版中的XML Schema设计师看起来非常有用)。我认为像MS Word这样的应用程序会从WPF的所有转换功能中获益良多。

答案 7 :(得分:1)

WPF是一个用于创建应用程序的绝佳框架。当你将它与一个优秀的GUI体系结构(如MVC,MVP或MVVM)结合在一起时,它可以很好地制作有趣的商业应用程序,其中包含比标准WinForms应用程序更多的pizazz。

另一方面,XAML是与WPF一起出现的丑陋表亲。 XAML的主要问题是工具。这些工具比不存在更糟糕,因为它们让人们认为有一个像WinForms这样的WPF设计器,当我知道大多数开发人员使用相当于记事本来开发他们的XAML时。

XAML的另一个工具问题是编译器。 XAML仅略好于魔术字符串。编译器无法承担您在XAML中犯的大多数错误,并且一些错误甚至不会导致您的应用程序崩溃。相反,WPF会在输出中输出错误消息并继续。

答案 8 :(得分:0)

因为他们基本上为Windows Phone 7抛弃了winddows mobile,它只使用WPF和XNA作为其主要的UI层,我不得不说是。人们甚至可以认为这一举动是对更广泛部署的Windows操作系统的一种表达。那个和大多数用户喜欢愚蠢的眼睛糖果恕我直言。

答案 9 :(得分:0)

关于工具问题,我承认在Visual Studio 2008的设计者中构建WPF和Silverlight应用程序需要相当多的专业知识才能做到正确。但是,我希望您能看一下Visual Studio 2010中改进的设计器 - 它还有许多功能,我们希望Windows Forms开发人员能够在构建业务表单时使用它们,无论是在Silverlight还是WPF中。

查看以下视频: Data Binding and Forms Tools Styling Tools Futures New Features in Beta 2

在此处获取Release Candidate

该小组有一个新的博客here

我希望您能找到这个有用的信息 - 如果您已经尝试过Visual Studio 2010,我很乐意听取您的反馈意见。发送邮件至mwthomas at microsoft dot com。

由于 马克威尔逊 - 托马斯 项目经理,WPF& Silverlight Designer,Visual Studio

答案 10 :(得分:0)

恕我直言,微软通过在WPF中开发VS 2010,提供了一些有关未来发展道路的线索。

WPF不再是WinForms。它具有完全不同且可扩展的UX设计方式。