2013-09-23 149 views
13

我有一个用WinForms制作的小程序,现在我想用WPF重新制作一个程序。将Winform应用程序转换为WPF应用程序

我是WPF的新手,我看过无论你用XAML做什么,你都可以没有它,这意味着只使用代码。

当然,您在使用Winforms时没有任何XAML。我可以对用于winforms应用程序的WPF应用程序使用相同的代码并获得相同的结果吗?或者我需要创建和编辑XAML?使用或不使用XAML的优点是什么?另外,考虑到过去使用Winforms的经验,我是否应该以某种方式改变我对WinForms的设计和实现的想法,但不适合WPF?

+2

为什么你想在WPF中重新创建它? –

+2

@SystemDown我对WPF非常陌生,因为你从我的问题中意识到,我知道你可以使用WPF让每件事看起来更好。几乎没有人仍然创建使用Winforms,如果它不是一些非常小的,非专业的东西,我想更多地了解WPF。 –

+1

因为这将是学习经验,我只是从头开始重新创建东西。你会学到更多,并避免直接翻译可以让你陷入任何陷阱。 –

回答

23

不,您不能在WPF中重复使用winforms中的代码。

即使你可以,你也不应该。

任何你可以用XAML做,你也可以不用它

你真的应该使用XAML来定义用户界面,然后用DataBindingMVVM,这是一个更专业的方式发展比传统的程序winforms方法。

不使用XAML比使用它更麻烦。它可能起初看起来很吓人,但这是一件非常棒的事情。

使用的WinForms

不,当然不是当

当然,你没有任何的XAML。 winforms是一个非常古老的技术,不支持任何东西。这就是为什么他们创建了Visual Studio设计师,否则没有人会使用winforms做任何事情,因为要做任何有用的事情都需要巨大的巨量代码。

我可以使用相同的代码为WPF应用程序,我用于 winforms应用程序并获得相同的结果?

也许,通过调整一些类名和什么,但是然后你失去了WPF提供的主要优势,它正是摆脱了可怕的WinForms类代码。

考虑使用的WinForms以往的经验,我应该以某种方式改变 我在想设计和实施 工作了的WinForms的方式,但并不适用于WPF?

是的。 WPF支持MVVM,这需要与传统的Winforms方法完全不同的思路。

我强烈建议阅读Rachel's Excellent Post关于从winforms升级到WPF。

+1

我都注意到你链接的文章有一些它自己关于你写的所有内容的链接。你可能有一些链接到文章或什么不是你自己的,你推荐? 我开始在http://www.wpftutorial.net/ 上阅读教程你碰巧知道这是否是一个好的源代码? –

+0

@YonatanNir首先,我会建议通过瑞秋的材料(上面链接)。 –

1

试图在没有XAML的情况下创建WPF控件会引起麻烦 - 整个框架是围绕MVVM模式构建的,它要求以声明方式而不是程序方式描述视图。尽管您可以在C#和XAML中创建相同的UI对象,但在C#中这样做需要您了解(以真正令人难以置信的细节)框架的运行方式,以便在用户界面状态发生变化时进行补偿。另一方面,如果你这样做了XAML(就像WPF规定你应该这样做),那么事情通常会更新得很好,而且没有必要解决无尽的错误。简而言之,“是”你可以用代码来完成,但是“不”,你不能在代码中完成而不会失去理智。

2

我试图直接将Winforms应用程序转换为WPF,并且导致出现比您需要的更多问题,因为您始终与框架对抗。阅读MVVM和数据绑定并使用它。它是WPF设计的,并具有诸如可测试性等几个优点。实际上,你可以用一些简单的概念(数据绑定,视图模型等等)获得很长的路,并随着你的发展扩展知识,但是我建议首先理解MVVM和WPF中的数据绑定。

一个很好的开始使用的框架是MVVMLight,但是它的价值在于没有框架来编写基础知识来了解事情是如何工作的。

我似乎记得这是一个很好的一套从芦苇科普塞帖子:http://reedcopsey.com/series/windows-forms-to-mvvm/

+0

我开始阅读http://www.wpftutorial.net/ 上的教程你碰巧知道这是否是关于该主题的好资料? –

1

其实这取决于如何复杂的是你的项目。对于相当小的项目,您可以非常简单地进行“转换”。但即使WPF开发经常基于MVVM/Prism,它也不是一个好习惯,它们给你带来很多好处。 此外,您的用户界面的行为可能会有所不同 - 这取决于您的项目的复杂性。

相关问题