​用于构建 Windows 桌面应用程序的 UI 框架 WPF

MIT
C# 查看源码»
Windows
微软
2009-07-08
红薯

WPF(Windows Presentation Foundation) 是微软推出的用于构建桌面客户端应用程序的 UI 框架,具有应用程序模型、控件、图形、布局、数据绑定和安全性等功能,属于 .NET Framework 3.0 的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

WPF 的核心是一个利用现代图形硬件的渲染引擎。

组成结构

Windows Presentation Foundation 由两个主要部分组成:引擎和编程框架。

1.Windows Presentation Foundation引擎。Windows Presentation Foundation 引擎统一了开发人员和设计人员体验文档、媒体和 UI 的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的运行时库。Windows Presentation Foundation 使得应用程序不仅能够充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。例如,Windows Presentation Foundation 的基于矢量的呈现引擎使应用程序可以灵活地利用高 DPI监视器,而无需开发人员或用户进行额外的工作。 同样,当 Windows Presentation Foundation 检测到支持硬件加速的视频卡时,它将利用硬件加速功能。

2.Windows Presentation Foundation 框架。Windows Presentation Foundation 框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。Windows Presentation Foundation 的设计考虑了可扩展性,使开发人员可以完全在 Windows Presentation Foundation引擎的基础上创建自己的控件,也可以通过对现有 Windows Presentation Foundation 控件进行再分类来创建自己的控件。Windows Presentation Foundation 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件。这些“自有控件”为开发下一代用户体验提供了构造块。

Microsoft 在引入 Windows Presentation Foundation 的同时,还引入了 XAML,这是一种公开表示 Windows应用程序用户界面的标记语言,可使开发人员和设计人员用来构建和重用 UI 的工具更加丰富。对于 Web 开发人员,XAML 提供了熟悉的 UI 说明模式。XAML 还使 UI 设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。

WPF 需要使用 Visual Studio 进行开发:

  • Required Workloads:

    • .NET Desktop Development

    • Desktop development with C++

  • Required Individual Components:

    • C++/CLI support

    • Windows 10 SDK

WPF 结构

的码云指数为
超过 的项目
加载中

评论(20)

noonoo
noonoo

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗

引用来自“大佛脚下”的评论

还好,学完WPF原理后,再看现在这些前端框架,秒杀。
我也是边学WPF,边做前端的。 是WPF让我入门 viewmodel这种开发模式的,的确是引领潮流的技术!
kidfruit
kidfruit

引用来自“sjz子游”的评论

这是挖坟了吗?2009年收录的给挖出来了

引用来自“久永”的评论

应该是刚刚才开源吧!

引用来自“kidfruit”的评论

我很好奇wpf如果要跨平台,那在linux和mac上后端渲染用什么,毕竟win上用的是directx来渲染。从最直接的移植考虑莫非opengl?

引用来自“久永”的评论

不用好奇,不是已经有新的开源技术出来吗? 你还在想,却已经有人在做了。
用的什么?至少从成本来说要实现directx的效果如果不用opengl,自己造轮子,那投入太大了。
久永
久永

引用来自“sjz子游”的评论

这是挖坟了吗?2009年收录的给挖出来了

引用来自“久永”的评论

应该是刚刚才开源吧!

引用来自“kidfruit”的评论

我很好奇wpf如果要跨平台,那在linux和mac上后端渲染用什么,毕竟win上用的是directx来渲染。从最直接的移植考虑莫非opengl?
不用好奇,不是已经有新的开源技术出来吗? 你还在想,却已经有人在做了。
kidfruit
kidfruit

引用来自“sjz子游”的评论

这是挖坟了吗?2009年收录的给挖出来了

引用来自“久永”的评论

应该是刚刚才开源吧!
我很好奇wpf如果要跨平台,那在linux和mac上后端渲染用什么,毕竟win上用的是directx来渲染。从最直接的移植考虑莫非opengl?
kidfruit
kidfruit

引用来自“IvanYu”的评论

不要为了黑而黑了,做自己的工作,过自己的生活。不知道安卓开发是不是借鉴了WPF呢,都是通过XML布局,现在的很多H5前端框架的MVVM模式是不是也借鉴人家WPF?
就好像java的lambda就是官方在c++ c#几个语言已有lambda模式之上借鉴的,这是官方在研究期间就公开过很多次并讨论了很多轮的事情,但是依然有很多狭隘的人会说java的lambda就是自己做的,谁都没学。
kidfruit
kidfruit

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗

引用来自“kidfruit”的评论

mfc开发人员来踢你一脚。mfc依然被支持,依然可以在最新的vs里开发,依然能在跑的好好的,性能碾压qt、gtk之类的。mfc就是开发模式比较落后而已,但并不代表就一无是处。另外silverlight、wpf、uwp,这些也是一脉相承的,技术路线一致,看起来名字很多,其实只是一套技术在不同的终端的细分而已。你确定你了解微软的技术体系?

引用来自“喵星人123”的评论

好的 继续你的MFC开发
一个对这套技术完全不了解的人也来随便喷两句找找优越?你这种让人作呕的语气和对技术狭隘的想法真的是太low了。你们老板是不是招不到人了?
喵星人123
喵星人123

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗

引用来自“kidfruit”的评论

mfc开发人员来踢你一脚。mfc依然被支持,依然可以在最新的vs里开发,依然能在跑的好好的,性能碾压qt、gtk之类的。mfc就是开发模式比较落后而已,但并不代表就一无是处。另外silverlight、wpf、uwp,这些也是一脉相承的,技术路线一致,看起来名字很多,其实只是一套技术在不同的终端的细分而已。你确定你了解微软的技术体系?
好的 继续你的MFC开发
kidfruit
kidfruit

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗
mfc开发人员来踢你一脚。mfc依然被支持,依然可以在最新的vs里开发,依然能在跑的好好的,性能碾压qt、gtk之类的。mfc就是开发模式比较落后而已,但并不代表就一无是处。另外silverlight、wpf、uwp,这些也是一脉相承的,技术路线一致,看起来名字很多,其实只是一套技术在不同的终端的细分而已。你确定你了解微软的技术体系?
大佛脚下
大佛脚下

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗

引用来自“大佛脚下”的评论

还好,学完WPF原理后,再看现在这些前端框架,秒杀。

引用来自“喵星人123”的评论

嘻嘻 WPF原理你怎么学的
看MSDN,拿Reflector看源码,然后自己用Winform模拟一个,本质就是个DirectUI
喵星人123
喵星人123

引用来自“喵星人123”的评论

当年的MFC开发人员 现在还好吗?跟着微软走的程序员,挥一挥你们的双手,让我看见你们好吗

引用来自“大佛脚下”的评论

还好,学完WPF原理后,再看现在这些前端框架,秒杀。
嘻嘻 WPF原理你怎么学的

微软开发者大会:VS 2019 Preview 发布;Windows UX 主要技术开源

美国当地时间12月4日,微软正式举行 Microsoft Connect(); 2018 开发者大会,本次大会的 slogan 是"Build the apps of tomorrow, today."。在今年的大会上,看得出来微软不是憋了一个 —— ...

2018/12/05 06:08

没有更多内容

加载失败,请刷新页面

没有更多内容

1
回答
【开源早报】Flutter 1.0 正式发布 | 微软开源 WPF | Edge 浏览器恐被取代

2018.12.5开源早报 【综合新闻】 1.微软开发者大会:VS 2019 Preview 发布;Windows UX 主要技术开源 2.微软正在打造基...

2018/12/05 09:05
3
回答
逻辑部分Java实现,想加个客户端界面,用什么技术方便,学习价值高?

想在windows跑的客户端。 之前学过一点wpf,没深入,转java阵营了。好像微软又偏爱uwp了,真坑。 javaFX学习的价值大不大?在win7以及...

2018/05/26 11:21
1
回答
关于C#的WPF布局问题

其实用winform挺好的,但是上面要求吧原来用winform写的都改成WPF,但是WPF的布局非常烦人(可能是我用的不到位),想实现一个XXX.Top ...

WPF
2015/06/09 07:46
1
回答
1
回答
使用wpf如何开发一个网格控件

各位有没有写过类似于visio的软件。我最近的一个项目有这个类似visio的建议拖拽控件的要求。碰到了一个问题。要让用户可以拖拽网格控件。这个网格就像wo...

WPF
2016/01/01 17:21
2
回答
wpf

@不插电码农 你好,想跟你请教个问题: 您好,刚看了一下您的关于wpf的文章,我是一个wpf初学者,想问一下您一个问题,就是我主页面上加了一个treevi...

WPF
2017/02/16 11:43
1
回答
WPF后台设置图片背景不拉伸

页面有个lable,我要实现点击一个Button为lable加入一个背景图片 private void but_chip1_Click(object se...

WPF
2012/03/13 08:48
1
回答
开发 WPF 程序,用 Visual Studio 和用 Blend 有啥区别 啊?
struct 的回答 2016/07/09 02:17
最佳答案
Visual Studio 是专业的 Code 工具,Blend 是专业的 UI 工具。 程序员使用 Visual Studio,界面设计人员使用 Blend。

没有更多内容

加载失败,请刷新页面

WPF学习资料

学习资料

2014/11/30 11:03
74
0
【干货来了】2016年DevExpress资源汇总(示例、视频)

在2016年,著名软件界面解决方案专家DevExpress进行了重大升级,EVGET围绕版本升级推出了一系列干货资源,现将2016年所有Dev示例资源和视频资源汇总于此,欢迎收藏转发点赞哦~ 示例Demo(仍在...

2016/12/02 16:34
49
0
“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心

近日微软公布了最新的WPF路线图,一片热议;对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread Studio for WPF产品做了一次重要更新,并随着Spread Studio 8.0发布...

2014/12/03 12:10
2.9K
0
WPF老矣,尚能饭否——且说说WPF今生未来(下):安心

"后山见! WPF就比winform好!激情对决"之总结篇。

2014/12/16 11:28
1K
0
WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口

目录 WPF的消息机制(一)-让应用程序动起来 WPF的消息机制(二)-WPF内部的5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭的消息的窗口和系统资源通知窗口 (3)用于用户交互的可见窗口 (...

2014/06/11 12:15
41
0
Silverlight学习资源更新

原文出处:http://kevinfan.blog.51cto.com/1037293/727892 本周Silverlight学习资源更新 Silverlight 利用Telerik导出到Word wangchongcy Silverlight 打印 wangchongcy vs2010 sp1 安装Sil...

2016/12/01 10:21
4
0
DevExpress v15.1:WPF控件升级(三)

<下载最新版DevExpress WPF Controls v15.1.5> WPF Rich Editor Control 编辑注释 最终用户可以添加新的注释、编辑它们,如果用户不再需要可以隐藏或删除注释。 布局API 在这个版本中,我们引...

2015/08/24 09:40
287
0
【干货来了】2016年DevExpress资源汇总(示例、视频)

在2016年,著名软件界面解决方案专家DevExpress进行了重大升级,EVGET围绕版本升级推出了一系列干货资源,现将2016年所有Dev示例资源和视频资源汇总于此,欢迎收藏转发点赞哦~ 示例Demo(仍在...

2016/12/02 09:48
40
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部