我已经用java编程了几年了。不久前,我决定是时候做出改变并学习 C#。
现在,由于 Visual Studio 和 C# 对我来说都是新的,我决定既然我必须学习它,我可能会学习最新的工具。
但是我无法找出要使用的 GUI liberay。我的第一次搜索表明 WPF 是用于创建 microsoft UI 的最新“lib”,许多其他线程表明情况可能并非如此。
因此,我问你们什么是 C# 的最新 UI “lib”,你们建议我使用什么?
我已经用java编程了几年了。不久前,我决定是时候做出改变并学习 C#。
现在,由于 Visual Studio 和 C# 对我来说都是新的,我决定既然我必须学习它,我可能会学习最新的工具。
但是我无法找出要使用的 GUI liberay。我的第一次搜索表明 WPF 是用于创建 microsoft UI 的最新“lib”,许多其他线程表明情况可能并非如此。
因此,我问你们什么是 C# 的最新 UI “lib”,你们建议我使用什么?
GUI 有两种主要风格(不包括 Web):WPF 和 Windows 窗体。WPF 是较新的,如果您没有使用 Windows 窗体的经验,可能会推荐 WPF 作为 GUI 替代方案。
现在 WPF 可能有几种“风味”——它在桌面应用程序、silverlight 应用程序和 windows 商店应用程序中的能力有点不同,桌面应用程序具有大部分功能,其他两个设置有限,主要是因为性能和安全原因(对于例如,您不能在 Windows 商店应用程序中将 UI 渲染为图像,但在桌面应用程序中可以)。
WPF 具有更好的硬件加速支持,具有更好的绑定和异步/线程支持,更加灵活,许多元素的外观可以很容易地改变——这在 Windows 窗体中不能那么容易,比如组合框——你可以改变颜色在 Windows 窗体中非常容易,但如果您需要圆角边缘,那就很难了。
WPF 也可以很容易地用于 MVVM 模式,这在 Windows 窗体中是一个相当大的挑战。
另一方面,Windows 窗体更容易学习 + 并且它具有非常好的第三方组件 - 例如 Telerik、Devexpress。两家供应商也都有 WPF 组件,但它们不如 Windows 窗体组件好,主要是因为它们是使用不适合 WPF 的 Windows 窗体知识设计的。
正如 Giedrius 所指出的,无论是 Windows 窗体还是 WPF。
就个人而言,我会从 Forms 开始几个星期,了解环境,然后转向 WPF 和可爱的 XAML 世界。
如果您的目标用户是拥有好机器的用户,那么 WPF 是正确的技术。它利用显卡的强大功能并支持矢量图形。您将使用 XAML 系统获得良好的开发速度等等
如果您正在寻找任何第三方控件,您可以评估 Infrajistics 或 Telerik。但取决于您的 UI 要求。
就最新技术而言,WPF 肯定是我建议您学习的技术,但是 WPF 和 WinForms 之间存在相当程度的互操作性,即您可以在 WPF 中托管 WinForm 控件,(我认为)反之亦然。
需要注意的一件事是,WPF 与 winform 完全不同——您仍然可以进行通常的拖放操作,但对于花哨的东西,您需要更改 XAML,这可能需要一些时间。
编辑——尽管学习 WPF 是值得的,因为一旦你学会了 WPF,你就可以轻松地生成丰富的界面。
对于 Windows 8 之前的任何内容,最新的是WPF。从 Windows 8 开始,您拥有 Metro(我知道名称已更改),但您仍然可以使用新获得的 XAML 技能(从 WPF 中获得)或开始进入 HTML 5 和 CSS 3,这也将使您在 web-基于应用程序。
Win Forms 比 WPF 更老,但仍然深受喜爱/建立,并且可以在某些地方使用。像大多数事情一样,为工作选择正确的工具。
我建议你学习 html、css 和 js。据我所知,您可以使用这些语言构建 Microsoft Windows 8 .net 应用程序。检查here,如果您决定制作所有这些语言都在使用的Web应用程序,这将很有用。
如果你不想用 Windows 8 限制自己,那就试试 WPF。WPF 上的应用程序将能够在您用于应用程序的 .net 框架版本的任何机器上运行。
总帐
正如其他人指出的那样,WPF 是要走的路。
没有提到的一件事是,(因为您有 Java 经验)您可以考虑 WPF 与其他技术(例如 winforms)的方式,就像您可以考虑 JavaFX 与以前的 Java UI 技术(例如 Swing)一样。
实际上,JavaFX 似乎是 WPF 的一个非常糟糕的副本。用于定义 UI 的语言是基于 XML 的(就像 XAML 一样),它对 DataBinding 的支持(更差)以及许多其他相似之处。