我是 GUI 开发新手
我必须警告您,WPF 的学习曲线非常陡峭。我什至会说它不适合没有经验的人。
Winforms 和 WPF 之间的转换
问题不在于代码本身。问题是写它的心态:
WPF 中绝对不需要背后的所有“传统”winforms 代码。
在 WPF 中,有DataBinding(嗯,实际上 winforms 有一种称为数据绑定的东西,但与 WPF 相比这是可笑的(就像 winforms 中的其他任何东西一样)。这完全消除了在程序代码中创建或操作任何 UI 元素的需要。一切都定义在XAML 然后 DataBound 到相关的模型和视图模型。这就是为什么在这种情况下所需的心态存在巨大差异的原因。
- 在 winforms 中,UI 存储有关其状态的信息。为了读取/检索/修改此信息,您必须在代码中访问这些 UI 元素。
- 在 WPF 中,ViewModel 和 Model(为存储数据而创建的简单类,根本不绑定到 UI)存储此状态信息。为了读取/检索/修改此信息,您不要访问代码中的 UI 元素。
WPF 视觉树比 winforms X,Y 方法复杂得多。因此,掌握一些深深埋藏在其中的 UI 元素,比如说 a DataTemplate
used for an ItemsControl
which is inside a DataTemplate
used as the CellTemplate
of aDataGrid
是你真的不想进入的东西。相信我。
我建议您阅读 @Rachel 的优秀解释和链接的博客文章,以更好地了解从笨拙、无聊、太多代码的 winform 世界过渡到美丽、可定制、可扩展、令人愉快的 XAML 世界和DataBinding(适用于所有基于 XAML 的技术 WPF、WinRT、Silverlight、Windows Phone 等)。
正如我设想我的最终产品包括动画
如果您即将开始(或开始)新产品,请忘记 winforms。它死了。除了默认的丑陋的东西之外,它不支持任何东西。如果不求助于许多可怕的黑客,就无法对其进行自定义/动画/美化。
每个人都会告诉你,winforms 只是为了维护遗留应用程序,而不再是任何开始任何严肃项目的人的选择。
然而,它是一个复杂而冗长的代码,因为我对 winforms 相对更舒服
一旦你学习了 MVVM,你很快就会意识到 WPF 需要 10% 的代码来在 winforms 中做任何事情。您的复杂而冗长的代码(可能是代码隐藏)将被简化为简单、简单的属性和INotifyPropertyChanged
. 这就是您在 WPF 中编码的方式。