2

我已经用java编程了几年了。不久前,我决定是时候做出改变并学习 C#。

现在,由于 Visual Studio 和 C# 对我来说都是新的,我决定既然我必须学习它,我可能会学习最新的工具。

但是我无法找出要使用的 GUI liberay。我的第一次搜索表明 WPF 是用于创建 microsoft UI 的最新“lib”,许多其他线程表明情况可能并非如此。

因此,我问你们什么是 C# 的最新 UI “lib”,你们建议我使用什么?

4

7 回答 7

1

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 窗体知识设计的。

于 2013-05-29T14:53:30.730 回答
1

正如 Giedrius 所指出的,无论是 Windows 窗体还是 WPF。

就个人而言,我会从 Forms 开始几个星期,了解环境,然后转向 WPF 和可爱的 XAML 世界。

于 2013-05-29T14:55:28.967 回答
1

如果您的目标用户是拥有好机器的用户,那么 WPF 是正确的技术。它利用显卡的强大功能并支持矢量图形。您将使用 XAML 系统获得良好的开发速度等等

如果您正在寻找任何第三方控件,您可以评估 Infrajistics 或 Telerik。但取决于您的 UI 要求。

于 2013-05-29T14:55:34.573 回答
1

就最新技术而言,WPF 肯定是我建议您学习的技术,但是 WPF 和 WinForms 之间存在相当程度的互操作性,即您可以在 WPF 中托管 WinForm 控件,(我认为)反之亦然。

需要注意的一件事是,WPF 与 winform 完全不同——您仍然可以进行通常的拖放操作,但对于花哨的东西,您需要更改 XAML,这可能需要一些时间。

编辑——尽管学习 WPF 是值得的,因为一旦你学会了 WPF,你就可以轻松地生成丰富的界面。

于 2013-05-29T14:56:32.027 回答
1

对于 Windows 8 之前的任何内容,最新的是WPF。从 Windows 8 开始,您拥有 Metro(我知道名称已更改),但您仍然可以使用新获得的 XAML 技能(从 WPF 中获得)或开始进入 HTML 5 和 CSS 3,这也将使您在 web-基于应用程序。

Win Forms 比 WPF 更老,但仍然深受喜爱/建立,并且可以在某些地方使用。像大多数事情一样,为工作选择正确的工具。

于 2013-05-29T14:59:03.727 回答
1

我建议你学习 html、css 和 js。据我所知,您可以使用这些语言构建 Microsoft Windows 8 .net 应用程序。检查here,如果您决定制作所有这些语言都在使用的Web应用程序,这将很有用。

如果你不想用 Windows 8 限制自己,那就试试 WPF。WPF 上的应用程序将能够在您用于应用程序的 .net 框架版本的任何机器上运行。

总帐

于 2013-05-29T15:12:00.723 回答
0

正如其他人指出的那样,WPF 是要走的路。

没有提到的一件事是,(因为您有 Java 经验)您可以考虑 WPF 与其他技术(例如 winforms)的方式,就像您可以考虑 JavaFX 与以前的 Java UI 技术(例如 Swing)一样。

实际上,JavaFX 似乎是 WPF 的一个非常糟糕的副本。用于定义 UI 的语言是基于 XML 的(就像 XAML 一样),它对 DataBinding 的支持(更差)以及许多其他相似之处。

于 2013-05-29T15:15:31.240 回答