为什么我觉得WinForm比WPF好用?

(排名越靠后表示我认为它对我的观点影响越大) 具体的说: 1.WinForm汉化相对比WPF好; 2.xaml式的编辑器让我不大习惯(许多改动直接面向…
关注者
244
被浏览
663,956
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

首先分析一下楼主说到的几个问题:

1.WinForm汉化相对比WPF好;

一时间没想出哪个WPF控件需要汉化的,可能楼主是指VS里面WPF界面的设计器的汉化。但一般熟悉WPF的人都是手敲Xaml的,很少用拖拉控件的方式搞界面了。

2.xaml式的编辑器让我不大习惯(许多改动直接面向xaml,winform只需要编辑器);

可能楼主还没有用过Web前端,还没有使用过html。对于有代码洁癖的程序员来说,WinForm设计器生成的 *.designer.cs 文件的代码是不忍直视的,宁愿累点也要手敲xaml,确实自己手敲的xaml也比设计器生成的代码容易维护很多。

3.WinForm比较友好,WPF相对麻烦(上次用一个ListView,在Items, ItemsSource中搞了半天,还有人说用DataContext);

从这一点可以看出楼主还没有搞清DataContext和Binding之间的关系,楼主应该是没有系统看过WPF教程的,就凭着使用WinForm的经验就上马使用WPF。我觉得楼主如果不是项目工期太紧张的话,至少应该先把WPF的教程从头到尾看一遍在做项目也不迟。


我自己也是WinForm走过来的,但深度用过WPF之后就不想再用WinForm了,WinForm除了启动速度快,搞简单的界面比较快之后,就没有其优点了。但一般业务系统能遇到简单的界面也不容易。

我暂时总结一下相对于WinForm来说,WPF的几个优点:

1、WPF的性能比较好。由于WinForm程序启动速度较快,很多人可能会觉得WinForm的性能是比WPF要好。但据我使用WinForm的经验,每当Panel嵌套比较多的WinForm窗口,打开的时候都会卡顿一会儿才能显示出来的。WPF情况好很多,只要嵌套的Panel不太多的话,界面不会有明显卡顿。

2、WPF打印方便。WPF通过PrintVisual方法是可以打印窗体里面所有控件的内容的。但WinForm通过CopyFromScreen的窗口打印方法就奇葩很多,不能打印超出显示器高度的内容,在10多年前普遍显示器偏小的年代真的不敢用。用底层的Graphics画内容的打印方法又太麻烦。

3、WPF界面的高度定制性。这个对于做业务系统的程序员来说,是WPF最大的优点。在WinForm的DataGridView里面插入一个DatePicker控件可是很费力的事情。但这个在WPF里面是很简单的事情,在DataGrid里面定义一个模板列就可以。这一点可能像我一样从 ASP.NET WebForms走过来的老程序员会有更深体会,我是熟练了WebForm之后再接触WinForm,很多时候在碰到相关业务需求的时候,都多么希望WinForm能有个Repeater控件。

4、动画(Storyboard),WinForm没有相对应的功能,但这个做业务系统也基本用不到。


总的来说,我觉得楼主如果想要学WPF的话,应该要先看一遍WPF的教程,然后下决心在往后一两个项目里面使用WPF,这样才能走上拥抱WPF抛弃WinForm的不归路。

最后回应评论区,在网上找了相关教程

WPF入门教程系列一--基础 - DotNet菜园 - 博客园

编辑于 2023-04-10 14:39 ・IP 属地广东