WPF(Windows Presentation Foundation)是微软推出的基于Windows的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设置人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
使用WPF(Windows Presentation Foundation),你可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。
WPF通过一套完善的应用程序开大功能对核心进行了扩展,这些功能包括可扩展应用程序标记语言(XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和板式。WPF属于.NET,因此可以生成整合.NET API其他元素的应用程序。
优点:
①、MVVM模式,数据和视图分离
②、类库多,上手快,可以快速开发
③、灵活的控件组合,可以修改已经存在的控件的外观
④、可以应用不同样式不同的控件,易于管理
⑤、支持动画,高级图形,高级数据绑定,3D等功能
⑥、绚丽的展示效果WPF除了可以使用传统的Windows installer以及ClickOnce方式来发布我们的桌面的应用程序之外,还可以将我们的应用程序稍加改动发布为基于浏览器的应用程序。
缺点:
①、对微软系统依懒性太强,到了非微软的操作sit上,很多FrameWork里面的类库就不好使了。
②、技术更新速度快
Windows Presentation Foundation由引擎和编程框架两个主要部分组成
3.1 Windows Presentation Foundation引擎
WPF引擎统一了开发人员和设计人员体验文档、媒体和UI的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的运行时库。WPF是的应用程序不仅能够充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。例如,WPF的基于矢量的呈现引擎使应用程序可以灵活地利用高DPI监视器,而无需开发而能源或用户进行额外的工作。同样,当WPF检测到支持硬件加速的视频卡时,它将利用硬件加速功能。
3.2 WPF框架
WPF框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。WPF的设计考虑了可扩展性,使开发人员可以完全在WPF引擎的基础上创建自己的控件,可以通过对现有WPF空间进行在分类来创建自己的控件。WPF框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置空间和内容的面板的一系列控件。这些“自我控件”为开发下一代用户体验提供了构造块。
Microsoft在引入WPF的同时,还引入了XAML,这是一种公开便是Windows应用程序用户界面的标记语言,可使开发人员和设计人员用来构建和重用UI的工具更加丰富。对于web开发人员,XAML提供了熟悉的UI说明模式。XAML还使UI设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。
对于企业:WPF实现改进的客户关系和不同的应用程序。通过提供能够快速、更好的视觉效果、独特的用户体验的技术,用来建立与客户的密切关系,使企业可以建立稳定的数字客户关系和独特的品牌化机会。而且,由于WPF是窗体、文档、视频、三维以及其他功能的综合,因此企业可以创建持久的用户体验解决方案,并集成到客户的日常活动中。
对开发人员和设计人员:WPF提供了统一的UI平台,因此他们只需要你学习一个模式,就可以获得无限可能的UI体验
对于.NET开发人员:其框架是熟悉的,并且它最终将减少提供最佳用户体验和通信逻辑所需的代码行数
对于设计人员:WPF提供的平台可消除内容、媒体和应用程序之间的边界。最重要的是,WPF可以使开发人员和设计人员同步紧密的合作来快速提供不同的连通体验
6.1 实质
先从UI上分析,UI的功能是让用户观察和操作数据,为了能显示数据和响应用户的操作通知程序(通过事件来通知,如何处理事件有时一系列的算法),所以控件就是显示数据和响应用户操作的UI元素,也即:控件就是数据和行为的载体
6.2 数据驱动UI
什么是数据驱动UI呢?
传统的GUI界面都是由Windows消息通过事件传递给程序,程序根据不同的操作来表达式出不同的数据体现在UI界面上,这样数据从某种程序上,收到很大的限制,WPF中是数据驱动UI,数据是核心,处于主动的,UI属于数据并表达数据,是被动的。WPF数据第一,控件第二
6.3 控件的分类
想了解更多可以去微软官网和百度查询
微软官网:https://docs.microsoft.com/zh-cn/dotnet/desktop/wpf/introduction-to-wpf?view=netframeworkdesktop-4.8
百度百科:https://baike.baidu.com/item/WPF/5299594?fr=aladdin
WPF和WinFrom最重要的区别,WinFrom只是标准窗体控件顶部的一层(如文本框),而WPF从零开始,几乎在所有场景下都不依赖于标准窗体控件
例:有一个图片和文字的按钮。它并不是一个标准窗体控件,WinFroms无法提供现成的,所有需要自己画图片,实现支持图像的按钮,或使用第三方控件。相反,在WPF中按钮可以包含任何东西,因为她本质上是一个带内容弄和不同状态的边框。WPF的按钮就好像是一个看不见的物体,可以放入各种其他控件到里面,部分WPF控件都是如此。你是想要一个带图片和文字的按钮?只需要把一张图片和一个文本块放到按钮里面就搞定了。在标准WinFroms控件之外好像找不到这种灵巧的方式,这就是为什么带图片的按钮这种简单的控件会有如此大市场的原因
7.1 WPF的优势
①、比较性,从而更符合目前的标准
②、微软正在使用它开发很多新应用,比如Visual Studio
③、更灵活,你不必自己去写控件或者买控件
④、你所使用的第三方控件更多的聚焦在WPF上,因为它比较新
⑤、XAML使得GUI的创建和编辑更加容易,而且允许拆分设计器(XAML)和代码器(C#,VB.NET)
⑥、数据绑定,你可以更加彻底的分离数据和布局
⑦、用硬件加速绘制图形用户界面,性能更好
⑧、允许你在Windows应用和web应用之间进行用户交互
7.2 WinForms优势
①、出现比较久,已经经历了很多检验和测试
②、已经有很多第三方控件供你购买或者免费使用
③、Visual Studio设计器仍然更适合WinForms,在WPF很多东西还需要自己去开发
打开软件--à文件---à新建---à项目,找到WPF应用(.NET Framework)(注:我用的是vs2019版本的,使用其他版本不影响,都是找到WPF应用(.NET Framework))
创建好了就是以下界面