首页 > 编程知识 正文

qt和wpf哪个更好用,winform和wpf哪个好

时间:2023-05-04 14:59:53 阅读:168876 作者:2478

WPF和WinForm开发的区别是什么? 2010-11-06 21:43 WPF在WinForm上开发后,从技术发展的角度来看,WPF无疑比WinForm先进。 与WinForm相比,我认为WPF具有以下优秀特性。

解决窗口问题

Windows GDI和WinForm开发中复杂的GUI APP应用程序使用大量控件,如网格。 每个控件或网格单元格都是一个小窗口,使用窗口句柄。 控制制造商提供了许多优化方法,但遇到Out of Memory或' Error Create Window handle ',程序将退出。

WPF从根本上改变了控件的显示模式,因为控件不使用窗口,所以不会占用窗口。 理论上,如果WPF只有一个主窗口,则WPF只使用一个窗口(如果忽略Dispatcher的隐藏窗口)。 所以WPF GUI程序并不意味着窗口不够。

多线程处理

开发WinForm程序时最头疼的问题之一是worker线程更改控件属性导致程序崩溃,这种非法操作并不是每次都失败。 WinForm控件提供了InvokeRequired属性,用于确定当前线程是否为控件创建线程。 问题是,如果控制树很深,这个属性会变慢。

WPF开始设计的时候,考虑了多线程的问题。 大多数WPF类由DispatcherObject继承。 DispatcherObject实际上是Dispatcher的简单软件包。 Dispatcher提供了一种类似于InvokeRequired的方法(检查访问)。 这个方法只需要比较线程的ID,所以很快。 另外,Dispatcher提供了优先队列、异步调用、Timer等功能,简化了多线程GUI程序的开发。

控件的合成

要在WinForm中实现带有复选框的下拉菜单,必须处理复杂的Window消息。 在WPF控件的Content Model和Layout系统上,WPF控件可以包含任何类型的控件,甚至可以包含. Net CLR对象。 许多现代控件制造商也提供了Composition控件,实现方法也与WPF的Content模型非常相似。 WPF开发团队应该借鉴了Infragistics的很多想法。 有了这个基础,新WPF控件的开发就更简单了。

XAML

我个人认为XAML是WPF中划时代的东方。 在XAML中,可以用文本描述复杂的Object Graph。 VB中有这个想法,但XAML更简单,因为它使用工具生成XAML。 通过Command、Routing Event等机制,界面设计者和程序员有比较明确的界限。

依存属性

WinForm开发中经常遇到的问题是,一个控件的值会改变,其他控件也会改变。 解决方案,是否写代码,是否用数据绑定,前者接口和代码分不开,后者还不够灵活。 另一方面,WPF在这方面可以通过XAML简单地链接相关属性,通过扩展实现复杂的绑定关系。

总的来说,我认为WPF应该是GUI发展的一个延续。 原本GUI中复杂的东西,现在可以用简单的文本来实现。

主要参考资料和工具:

windowspresentationfoundationunleashedbyadamnathan

MSDN

essentialwindowspresentationfoundation (强烈推荐*,并回答了许多WHY问题) ) ) )。

windows wpf源代码

Reflector转载于:https://www.cn blogs.com/gld sb/p/4188718.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。