、
结果来说,属于两套界面渲染方式。一个是对传统windows界面元素的封装,通过gdi绘制。另一个是全新的dx渲染绘制的界面,也脱离了对传统windows控件的依赖,没有历史包袱,理论上可以展现更炫酷的界面。对初级开发人员来说,没太大区别,类似的基本设计器是他们设计界面的主要手段,一样给事件编写代码。对初级以上开发人员来说,wpf需要学习xaml,有全新的ui描述语言,特别是可以通过模板的嵌套实现复杂的元素,通过style实现类似css的功能,通过比winform完善的多的数据绑定机制实现业务逻辑可以专心对数据而不是界面进行开发。前途来说,两者必定还会长期共存。深入理解winform对理解windows一些内部机制有好处。好好学习wpf可以更方便过度到其他xaml相关技术,这是微软目前广泛使用的技术,比如接下来的windows通用应用。
作者:知乎用户
链接:https://www.zhihu.com/question/36859063/answer/69371365
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2、
Winform本质上就是在MFC上增加一层.Net API, 从06年开始就只有几个人在维护,基本上不增加任何新feature, 只是做bug fix. 所以,如果你要开发windows上的程序,最好不要使用Winform, 懂了这个技能也没啥用。Win8开始,微软用了一套新的Framework,但是跟WPF很相像,都是XAML,后面的设计思想也是基本一样的(毕竟是同一组人设计的)所以,如果你要学Windows上界面开发,WPF算是一个选择吧另外,从实现上讲,WinForm用的是Windows以前那一套每个控件都是一个窗口的设计,而WPF本身只有一个窗口,所有控件都在这个窗口里的Visual Tree上,另外,它还可以有效利用你的GPU.
作者:cabbage
链接:https://www.zhihu.com/question/36859063/answer/77876774
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3、
对于初学者来说,最直观的印象是:winform的控件更多,但是wpf的界面可以更炫酷,更重要的是wpf对于屏幕的自适应比winform优秀得多。太多开发桌面程序的人由winform转到wpf最重要的原因是winform的控件自适应做得很差,而不同客户公司里有不同比例的显示器。winform还有一些其他方面让你不爽,比如label标签背景不能设置为透明,以及窗口编辑视图不能缩放,让你感觉到很掣肘。而wpf的则给了你全面的自由,特别是学到以后的修改模板以及特效。至于数据绑定,mvvc 设计模式初学者通常感受不到它的好处的。至于说到的性能差异,通常可以忽略不计。而且wpf完全兼容winform的语法,所以越快转越好!
作者:知乎用户
链接:https://www.zhihu.com/question/36859063/answer/69381456
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4、
你想上班 那么针对公司需求学如果只是自己写着玩 那么区分一下1.你的程序运行在 自己机器a.一个工具而已 要的是cooooooool 那么WPFb.一个工具而已 要的是useful easy 那么winform2.运行在客户机器a.客户要求coooooool 那么wpfb.客户要求 userful 那么winform不要谈到性能 就可以忽略。 XP机器 依旧很多。记住WPF 需要大量内存 以及CPU的代价来实现普通功能。记住WPF 是新的东西 需要重新上手学习记住 winform是 老的东西 win32 的那一套老生常谈都可用在这里如果谈前景 理论上说起来是WPF 更有前景 但是目前实际来看 WPF发展并不如预期 相反winform也并不如预期的没落。加上 巨硬 经常会自己打脸。
作者:Nico Chen
链接:https://www.zhihu.com/question/36859063/answer/128784499
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
5、做项目WinForm更好。虽然WPF更先进,但是好比XP比Win8更普及一样。WinForm具有更好的客户端性能。功能上也差不多,都能做出来。还有UWP,当然这个更冷门。
比较有前景的是 .net Core。
6、
1、改界面winform:写的程序如果需要改界面牵扯很大。代码的编辑可能会导致更多的错漏出现而不自知。大工程改界面更甚。wpf:如果采用mvvm(model、view、viewmodel)来写,任你界面改翻天,后台代码不受任何印象。2、复杂的控件winform:写各种各样的后台代码wpf:用依赖属性、附加属性、触发器即可定制复杂的控件。比如显示股票k线价格的控件3、动画winform:写后台代码wpf:用animation的各种属性即可4、句柄winform:一个控件一个句柄(记得是这样,如果我记错了请指正)wpf:整个窗口同一个句柄5、控件自适应winform:麻烦wpf:利用wpf的panel,就能让控件自动自适应。
作者:知乎用户
链接:https://www.zhihu.com/question/36859063/answer/380193324
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
7、
作者:知乎用户
链接:https://www.zhihu.com/question/36859063/answer/524667474
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
winForm 使用同一套编程语言代码完成界面的设计,以及后台的交互逻辑。你在winForm代码中可以了解和干预图形界面的渲染时机和细节。winForm使用传统的GDI渲染图形界面,较为中规中矩,但难以实现得更绚丽。winForm很成熟,有十几年的技术积淀,但微软已经停止对其增加新的特性,仅在某些安全漏洞上做一些补丁。WPF的设计理念是图形和逻辑完全分离,因此图形界面的设计是通过专门的XAML代码设计的,后台逻辑则可以使用C#或VB编写。你无法在WPF/XAML代码中了解和干预图形界面的渲染时机和细节。WPF使用DX渲染图形界面,更接近图形驱动程序,效果可以非常绚丽,性能也比较好。WPF出现的比较晚,但也有好几年的技术沉淀了。由于现阶段微软更推崇升级版的UWP,WPF本身也像winForm一样好久没有新的特性了。winForm适合没有专门的图形设计师,且不需要在图形界面有太多要求的团队,入手简单。WPF适合有专门的图形设计师,图形界面有较高要求的团队,相对复杂。就技术本身来说,WPF的技术更符合时代潮流,更有前景。但个人来说,了解winForm有助于理解图形界面生成处理的细节,winForm在某种程度上类似于MFC,但又不至于太底层而难懂。
8、
你如果是职业码农,请问你学wpf做什么呢?开发桌面exe吗?就算搞专业桌面应用的企业也都是跨平台方案,有几个用wpf呢?你如果是业余码农,为什么不用winform呢?winform简单而且开发速度快,嫌丑的话再用donetbar之类的插件美化一下即可,最重要的是部署,xp win7基本都有net2.0的环境,直接就能跑。你能体会到写完wpf,最后部署到xp却发现客户端上安装net4.0装不上的感觉吗?补充下:现在xp电脑基本上不用考虑,但是依然不推荐wpf。速成推荐winform,深入学习推荐qt或者electron 。qt 既有常规拖控件的widgets,又有类似于前端界面的qml和webengine,程序还能跑在安卓/ios上,强烈推荐。
作者:烫烫屯
链接:https://www.zhihu.com/question/36859063/answer/80781661
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
9、
我正面回答一下题主的问题吧:其实两个前景都不大好。WPF比Winform略好一点的方面是,现在微软的新界面开发方式,都是用XAML,所以Siverlight,WPF,Windows Phone/Metro,学了一样,就一通百通了,但是实质上,都看不到有什么太光明的前景,至少在国内是这样的。
作者:赵科进
链接:https://www.zhihu.com/question/36859063/answer/69389566
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
10、
学会XAML,5分钟看懂DIV+CSS。
11、
当然是各有各的好喽。
WinFrom比较老是不追求界面,要求一般性能的首选。Wpf是新一代的Ui开发框架,适合界面要求高的,性能也没有那么不堪,适合快速开发。所以假如想做好的话这两者甚至是MFC都要熟悉的。这三者即可相互替代,也可相互融合。手机码字
12、
作者:秋枫
链接:https://www.zhihu.com/question/36859063/answer/332638303
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
wpf的底层是DirectX,意味着你的显示效果不仅可以更炫更酷,同时显卡(集显独显均可)提供的加速也不会拖累你的运行速度。winform的底层是GDI/GDI+,除非你明确使用DX的接口,不然永远都是CPU在画图,效果没那么炫,而且无法显卡加速。/>wpf的界面设计和逻辑设计可以分离,界面设计师可以利用blend自主设计好看的界面,而不是最终让程序员来实现那个复杂的动画或者设计。winform设计师最多拖一拖,而这往往不够用。wpf对于数据逻辑、业务逻辑、显示逻辑进行了解耦和,可以让不同部门协同工作更舒服一些,winform多少有一些搅在一起。
话说选择不对,努力白费,对于C#的学习也是一样方向不对努力白费。
新手或者有经验的开发者学习c#时往往不知道该学习哪个技术,哪些框架。
盲目的学习会导致不足以学以致用,下面就来分享几个学习路线图。
一、后端开发路线
这条线路是纯后端开发,主要做服务端开发,前后端分离是当下的主流开发模式。该路线方向需要学习以下技能:
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、数据库:MySql、SqlServer 深入学习其中一种即可,另一种需要熟悉
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
7、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
8、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
二、c/s客户端开发路线
当下物联网开发正火很多大厂都在招物联网技术开发
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、数据库:MySql、SqlServer 深入学习其中一种即可,另一种需要熟悉
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、客户端方面:Wpf(深入学习)、MQtt协议、Winfrom(可选)
7、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
8、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
9、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
三、Web全栈开发路线1
该路线是全栈开发,需要学习前端的一些基础知识:
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、数据库:MySql、SqlServer 深入学习其中一种即可,另一种需要熟悉
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、前端方面:Asp.Net Mvc、js、html、css、Vue(React、Angula js)
7、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
8、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
9、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
四、Web全栈开发路线2
c#全栈开发方向,使用c#开发前后端功能,不需要学习js和html
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、数据库:MySql、SqlServer 深入学习其中一种即可,另一种需要熟悉
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、前端方面:Blazer(深入学习)
7、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
8、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
9、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
五、游戏开发路线
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、游戏引擎:Unity3d(深入学习)
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
7、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
8、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
六、移动端开发路线
如果你项从事开发移动应用,使用c#开发原生安卓、IOS、Mac 应用你需要掌握以下技术
1、基础知识:c#基础知识、Asp.Net Core相关知识、Asp.Net Core Web Api、Asp.Net Core Aap.Net Mvc(可选) 、Grpc
2、ORM:主要学习EF Core、Dapper(其他流行ORM也行但尽量走主流路线)
3、数据库:SqlLite
4、日志组件:NLog或者Serilog
5、定时框架:Quartz.Net Core或者Handfire
6、客户端方面:Xamarin(深入学习)、Maui
7、分布式组件:Redis、RabbitMQ、Mongdb(可选)、Kafka(可选)
8、架构方面:经典三层、熟悉DDD架构模式(可选)、熟悉微服务(可选)
9、CICD:熟悉Linux操作系统、Git代码管理器、Doker(可选)、K8s(可选)
学习路线四五条总有你在用的一条,如果你还有其他路线欢迎留言,一起探讨新的学习方向。
#学编程#
么是MVVM模式?
MVVM(Model-View-ViewModel)是一种软件架构设计模式,由微软 WPF(用于替代 WinForm,以前就是用这个技术开发桌面应用程序的)和 Silverlight(类似于 Java Applet,简单点说就是在浏览器上运行的 WPF) 的架构师 Ken Cooper 和 Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。 由 John Gossman(同样也是 WPF 和 Silverlight 的架构师)于 2005 年在他的博客上发表。MVVM 已经非常成熟了,当下流行的 MVVM 框架有 Vue.js , AngularJS 等。
MVVM 源自于经典的 MVC(Model-View-Controller)模式。MVVM 的核心是 ViewModel 层,负责转换 Model 中的数据对象来让数据变得更容易管理和使用,其作用如下:
为什么要使用MVVM?
MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model),它有几大好处:
一句话概括架构的本质:所有的架构本质上都是为了解耦。
MVVM的组成部分
MVVM架构如下图所示。
View
View 是视图层,也就是用户界面。前端主要由 HTML 和 CSS 来构建,为了更方便地展现ViewModel 或者 Model层的数据,已经产生了各种各样的前后端模板语言,比如 FreeMarker、Thymeleaf 等,各大 MVVM 框架如 Vue.js,AngularJS,EJS 等也都有自己用来构建用户界面的内置模板语言。
Model
Model 是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统一的接口规则。
ViewModel
ViewModel 是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的Model 数据进行转换处理,做二次封装,以生成符合 View 层使用预期的视图数据模型。
需要注意的是 ViewModel 所封装出来的数据模型包括视图的状态和行为两部分,而 Model 层的数据模型是只包含状态的。
视图状态和行为都封装在了 ViewModel 里。这样的封装使得 ViewModel 可以完整地去描述 View 层。
由于实现了双向绑定,ViewModel 的内容会实时展现在 View 层,这是激动人心的,因为前端开发者再也不必低效又麻烦地通过操纵 DOM 去更新视图。
MVVM 框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护ViewModel,更新数据视图就会自动得到相应更新,真正实现事件驱动编程。
View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与Model 层交互,这就完全解耦了 View 层和 Model 层。这个解耦是至关重要的,它是前后端分离方案实施的重要一环。
*请认真填写需求信息,我们会在24小时内与您取得联系。