什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?

Posted

技术标签:

【中文标题】什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?【英文标题】:What would be the best chioce, Windows Forms or WPF development in C#? 【发布时间】:2011-04-15 12:00:35 【问题描述】:

在学习 C# 语言时。如今,所有应用程序都在开发中。我会更好地专注于 Windows 窗体开发或 WPF 开发。我想开发使用 ADO.net 进行 SQL Server 数据库访问的软件。还可以与 Microsoft Office 集成以创建图表和图形等的独立应用程序...

【问题讨论】:

【参考方案1】:

虽然对于 Windows UI 来说两者都可以达到类似的效果,但它们的功能是相互独立的,这也是它们的目的。

WinForms 久经考验且真实,由于强大的根基而不会发展。这并不意味着 WinForms 已被弃用。这只是意味着 WinForms 的基础类已经很成熟并且很灵活。请记住通过 Control 类和深度工程 UI 消息传递(通过 WinForms 类公开的句柄)扩展 WinForms 的灵活性。

然而,WPF 是设计用户界面的抽象层,不一定或专门用于 Windows 用户界面。最难跨越的障碍是从基于坐标的用户界面(像素/位图/索引)的思想转变为基于矢量的用户界面,其中 WPF 几乎可以适应任何尺寸控制或渲染平面。

WPF 的好处是您正在学习应用程序的三个不同目标 - Windows UI、SilverLight 和现在的 Windows Phone。 WinForms 面向 Windows UI 和 Windows Mobile (CE)。基于常见小部件的干净 UI 在 WinForms 中有适当的基础。如果自定义的动态 UI 是您的目标,不妨试一试 WPF。

【讨论】:

【参考方案2】:

我将使用 WPF,因为它还允许您使用相同的 XAML 标记来执行 Silverlight 应用程序。

话虽如此,课程有马,所以您需要为工作选择合适的工具。这确实意味着您需要了解两者才能做出明智的决定。 :)

【讨论】:

【参考方案3】:

使用 WPF 的学习曲线肯定要陡峭得多 - 同时,您可以轻松地在 Windows 窗体中创建一些简单的 UI,以满足您对 ADO.net 或 SQL Server 数据库访问的需求。将图表/图形添加到组合中后,您将想要轻松学习 WPF。

您可能还想看看 Lightswitch,它处理了 Silverlight/WPF 的一些复杂性。

【讨论】:

【参考方案4】:

尽管 WPF 是未来,它为您提供了很大的灵活性,但我不建议完全切换到 WPF。此外,如果您有一位能够处理设计部分的设计师,您将能够充分利用 WPF。我并不是说你需要一个设计师,而是根据我在 WPF 方面的经验,如果你想开发一个看起来像杀手的应用程序,你肯定需要有人知道 WPF 的位和字节。正如 BrokenGlass 所说,WPF 的学习曲线太陡了。因此,只需逐步切换即可。如果您已经有一些 Windows 窗体应用程序,请尝试在 WPF 中重写其中的一些。

【讨论】:

我认为 too 陡峭有点太过分了。在 XAML/WPF 中确实有很多东西要学,但我不会说它是不可克服的:几个月前,我帮助一个以前没有 XAML 经验的团队学习并推动了一个 Silverlight 4 应用程序,这是一个滑坡次,但项目完成得很好,团队学习了 XAML :-)【参考方案5】:

您尝试做的事情可以使用 WinForms 和 WPF 来完成。 WinForms 是一个更熟悉的范例,但(大但)XAML,特别是 WPF,不是未来,而是 当前在 .NET 中执行 Windows UI 的方式,WinForms 是过去,它基本上是维护模式(适用于现有应用程序,我敢说新应用程序已过时)。是的,XAML 的学习曲线有些陡峭,但你获得的能力值得付出努力,此外 XAML/WPF/Silverlight 上有越来越多的资源(书籍、库),而对于 WinForms,有很多但停滞不前(我没有几年内没有看到任何新版本的 WinForms 书籍)。值得注意的一件事是 XAML 的数据绑定能力,这使得许多将数据从对象/数据集移入/移出可视控件的代码变得不必要。

【讨论】:

【参考方案6】:

WPF 和 XAML 是一个学习曲线,但我的经验是可以在更短的时间内构建更强大、更简洁和可支持的应用程序。可以将 XAML 从一个页面复制并粘贴到另一个页面。在 Windows 窗体上,我放弃了从一个页面(窗体)到另一个页面(窗体)的 UI 元素的复制和过去,因为它锁定了整个应用程序的次数太多。双向数据绑定是一个梦想。 WPF UI 具有更商业级的外观。 Silverlight 的可移植性。对我来说,这是我从 C++ 中获得的 98% 的成果。

【讨论】:

谁不喜欢我的回答?我是为生活而开发的。我没有说任何绝对的东西——只是我的看法。是什么造成了负面影响?【参考方案7】:

由于您的主要目标是学习 C#,因此您应该更多地关注语言特性而不是 UI。您应该尝试学习和使用 C# 的各种功能以及它支持的所有功能以及如何使用。学习(C#)将更多地用于开发应用程序的业务层和数据层,而不是 UI;所以你应该首先专注于构建这些层(使用任何表示框架)。

我不确定您之前是否有任何控制台应用程序、WinForms、WPF 或 ASP.net 的经验,但出于学习目的,您应该选择一个您最熟悉的。如果您是新人,那么我建议您先从 WinForms 开始,因为您将在 WinForms 中然后在 WPF 中编写大量 C# 代码,然后再使用 WPF。

我的回答完全集中在你的主要目标是学习 C# 而不是哪个 UI 框架更好等这一事实上。

【讨论】:

以上是关于什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?的主要内容,如果未能解决你的问题,请参考以下文章

根据选择一个列表框中的项目选择/取消选择多个列表框中的项目 - C# Windows 窗体

C#中Windows窗体工具栏

Windows 窗体和 C# 中的动态自上而下的控件列表?

从 c# windows 窗体中的图像中读取文本

vs2015中的c#windows窗体应用程序怎么使用OpenGL?

在 c# 中使用文本框中的数据库值打开特定的 Windows 窗体