
- 属 于
- 微软
- 类 型
- 图形系统
- 中文名
- Windows呈现基础
- 外文名
- Windows Presentation Foundation
-
WPF
2017-10-10 10:44:03知乎:为什么很少看到使用WPF开发的流行的应用程序呢? 因为wpf一点都不棒,你不要看了个tutorial,getting started教程,写了个todo list,就觉得xaml布局很强大,binding很牛逼,写到大型应用你就会发现,坑...知乎:为什么很少看到使用WPF开发的流行的应用程序呢?
因为wpf一点都不棒,你不要看了个tutorial,getting started教程,写了个todo list,就觉得xaml布局很强大,binding很牛逼,写到大型应用你就会发现,坑是无比的多,碰到问题没有社区,你只能自己解决。而且你还会被微软坑,最近的.net 4.7就一堆wpf的狗屁bug。
总结,wpf的开发体验连ios都不如,更不如web android,wpf哪天死了我是很开心的
作者:Linn
链接:https://www.zhihu.com/question/23598623/answer/201420032
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。xaml:binding:百度百科:WPF
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面???。WPF在国内还有希望和前途吗?为什么大公司不会使用它?QQ出了个概念版还很少更新,wpf是不是没前途了?作者:匿名用户
链接:https://www.zhihu.com/question/26862663/answer/76386239
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作为做过3年多wpf开发,我也来说几句,
先说优点
1、wpf这个ui框架是很前沿的,包含了很多界面开发的特性,非常灵活,因为个人做界面开发比较多,包括web,iOS,android都接触过,wpf是我认为目前设计的最好的ui界面库
2、好的界面库有好的ide支持,vs的好用大家都懂得
3、一个功能多种实现方案,虽说灵活但实际对开发人员的要求更高,需要有更好的设计能力,追求优雅设计,MVVM模式讲究让界面代码尽量xaml化
4、强大的.net类库支持,ms平台的特性一向是入门简单,精通难,而且方案更新快,开发人员都比较依赖微软更新,开源力量还不够
5、基于DirectX渲染,渲染效率好,确实有很多优点
再说缺点吧
1、内存占用高,基于.net的反射机制和wpf的内部机制,你想把控内存真心是难,只能一定程度控制,c++就不一样,内存是可控的
2、功能太多导致学习成本非常高,传统开发理念需要转换MVVM,但由于控件支持不完善,会出现不伦不类的情况
3、平台推广不利,这个才是最大原因,可以说是本人在.net多年学了很多,写代码是需要思考才能积累经验的,这种模式不适合互联网的快递跌代节奏,市场从业的机会太少,导致发展缓慢
4、功能不够完善,ms的客户端技术方案太多了,wpf只是其中一种,本来wp是一个机会,奈何wp又推不起来,个人感觉wp开发功能较wpf缩水厉害,后面又为silverlight加了很多轻量技术方案然后引入wpf,搞得不伦不类,已经把平台分为wpf,sl,wp,win 8 morden ui
5、平台真心混乱 自从 win8出来以后,我看到了win 8 morden ui,看了下sdk,又是一套api,感觉又是一个坑,果断决定放弃了,因为平台没有市场,去学习毫无意义,太多时间耗费在.net平台上了,感觉微软的策略真心是有问题,也得出一个结论,微软是一个比较喜欢玩技术的公司,跟着玩你会发现真的被玩了,现在看ios开发,反而感觉设计的好简单暴力,有时候给太多技术方案给开发人员不是一个好事情最后总结
以上个人见解
1、wpf技术是个好东西,是界面开发技术的精华,值得学习
2、wpf不是一切,是界面开发的一种方案,PC客户端开发坑很多,精通的话门槛很高,光会.net是不够的,底层得学
3、平台推广不给力是关键MVVM让开发效率和代码可维护性提高很多。作者:cabbage
链接:https://www.zhihu.com/question/26862663/answer/74463686
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我是2004年开始在微软内部做WPF的,应该算是国内最早的WPF开发人员了,现在WPF里面应该还有不少我的代码:-), MSDN上也有我做的一些关于WPF的讲座.
我对WPF的看法是它有存在的理由,但是前景要基于Windows接下来的发展,具体能发展到哪一步很难讲.
我觉得WPF本身是一个很不错的语言,容易上手,开发效率高,容易维护,缺点是需要很长时间精通,因为他很多东西设计的太flexible了,导致想实现一个效果有多种选择,而你需要一定的经验才知道那种是最好的选择。另外,现在如果你要开发一个应用,基本上是Android + iOS + Web. 很少有公司会在单独给Windows开发一个客户端,所以也导致WPF的采用率很低。
一开始设计的缺陷和后来微软内部很多脑残决定,导致WPF现在的状态,比如
1) WPF本身很heavy, 你用WPF做的程序,基本上10M+或者100M+内存使用时家常便饭
2) 因为很heavy, 所以,后来出了Silverlight, 有点像缩减版的WPF. 但是微软推了几年,又决定不推了
3) Windows8开始使用Jupiter,这个和WPF很像(毕竟是同一组人做出来的), 但是又有一些区别,导致程序要做不少改动才能运行,在一定程序上也阻碍的WPF的发展
4) Windows Phone最开始用Silverlight, 后来又改成Jupiter, 也让很多开发人员不乐意在微软的平台上开发
总之,微软在失落的10年里犯了很多错误,WPF现在的地位也跟这息息相关。
虽然我个人很希望WPF能越来越好,但是具体如何,是基于Windows和Windows Phone的发展,目前看,Windows Phone应该是没戏了。最新的新闻是微软本来在Windows Phone上做了一套兼容Android App的环境,结果做完后,内部斗争又不发布了,在我看来又是一个脑残决定,所以Windows Phone是注定摆脱不了"没有用户所以没人做App, 没有App所有用户不愿意买"的怪圈了。不是国内WPF没有前途,而是国内很多公司不了解,不愿意去了解,另外就是WPF的成本高。其实这个问题从新手看就是这个技术以后对我涨工资跳槽前景如何。对成熟开发者,只要喜欢就足够了:) -
wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例
2009-05-21 11:19:42wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf... -
WPF全系列事例代码
2012-11-17 17:01:56WPF基础教程所有相关的源代码,博客文章请查阅:http://blog.csdn.net/fwj380891124 之WPF板块类容。非常详细的介绍了WPF,适合初学者入门学习。 -
WPF经典教程之WPF命令
2014-10-05 01:16:30WPF中的命令路由与事件路由是两个很让初学者头痛的概念,对于命令路由可以理解为,系统(WPF)定义了一系列的操作,在应用程序中可以直接使用。例如,定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作,... -
WPF经典教程之[13]WPF资源
2014-10-09 10:43:04通常使用 WPF 资源作为重用通常定义的对象和值的简单方法。例如定义一种可以复用的单色的Brush对象,按钮的背景及矩形的填充颜色均使用此Brush。。。。。。 (更多资源:http://cleopard.download.csdn.net/) (福利:... -
WPF经典教程之WPF体系结构
2014-10-03 12:35:07WPF的基础的体系结构 所引用的Assembly如下图所示: 关系图中的PresentationFramework PresentationCore 和 milcore是 WPF 的主要代码部分 在这些组件中 只有一个是非托管组件 – milcore milcore 是以非托管代码... -
WPF经典教程之WPF控件模型
2014-10-05 00:48:45WPF经典教程之WPF体系结构 http://download.csdn.net/detail/cleopard/7999393 WPF经典教程之WPF应用程序管理 http://download.csdn.net/detail/cleopard/8002969 WPF经典教程之WPF窗体 ... -
WPF:WPF绘制曲线
2019-01-09 14:25:50WPF开发中经常需要绘制曲线、直方图等。虽然WPF自带了绘制图形等基础功能,但做程序一个很基础的原则就是避免重复造轮子。在GitHub上找到了微软官方的WPF绘制曲线开源库:InteractiveDataDisplay.WPF。我使用的...简述
WPF开发中经常需要绘制曲线、直方图等。虽然WPF自带了绘制图形等基础功能,但做程序一个很基础的原则就是避免重复造轮子。在GitHub上找到了微软官方的WPF绘制曲线开源库:InteractiveDataDisplay.WPF。
我使用的IDE是VS201x,建议使用NuGet安装--引用InteractiveDataDisplay.WPF。如何使用NuGet,请自行百度。
以下是我实验的该开源库绘制的WPF曲线程序。代码
MainWindow.xaml
<Window x:Class="WpfDrawPlot.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d3="clr-namespace:InteractiveDataDisplay.WPF;assembly=InteractiveDataDisplay.WPF" Title="MainWindow" Height="600" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!-- BarGraph --> <d3:Chart Grid.Row="0"> <d3:Chart.Title> <TextBlock Text="WPF Bar Chart" HorizontalAlignment="Center" FontSize="18" Margin="0, 5"/> </d3:Chart.Title> <d3:BarGraph x:Name="BarChart" Description="BarChart" Stroke="Red" StrokeThickness="1"/> </d3:Chart> <!-- LineGraph --> <d3:Chart x:Name="LinePlot" Grid.Row="1"> <d3:Chart.Title> <TextBlock Text="WPF Line Chart" HorizontalAlignment="Center" FontSize="18" Margin="0, 5"/> </d3:Chart.Title> <d3:LineGraph x:Name="LineChart" Description="LineChart" Stroke="Green" StrokeThickness="1"/> </d3:Chart> </Grid> </Window>
MainWindow.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Threading; using InteractiveDataDisplay.WPF; namespace WpfDrawPlot { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //线程中更新曲线 Thread threadTmp = new Thread( UpdateChart ); threadTmp.Start(); } private void UpdateChart() { int nPointNum = 100; Random randm = new Random(); double[] dArray = new double[ nPointNum ]; double[] dX = new double[ nPointNum ]; double[] dY = new double[ nPointNum ]; double dRandomtTmp = 0; while( true ) { Thread.Sleep( 1000 );//每秒刷新一次 for ( int n = 0; n < dArray.Length; n++ ) { dRandomtTmp = randm.NextDouble(); dArray[ n ] = ( dRandomtTmp < 0.5 ) ? -dRandomtTmp * dArray.Length : dRandomtTmp * dArray.Length; } for ( int n = 0; n < dX.Length; n++ ) { dX[ n ] = n; dY[ n ] = randm.Next( dX.Length ); } //更新UI Dispatcher.Invoke( new Action( delegate { this.BarChart.PlotBars( dArray ); this.LineChart.Plot( dX, dY ); } ) ); } } } }
效果
转载于:https://blog.51cto.com/weiyuqingcheng/2340573
-
WPF仿360卫士9.0界面设计
2013-07-01 15:19:55WPF仿360卫士9.0界面设计 http://www.cnblogs.com/bdstjk/ -
wpf 圆形菜单
2014-02-26 00:58:19wpf 圆形菜单 详细解说: http://www.cnblogs.com/ExMan/admin/EditPosts.aspx?postid=3567474&update=1 -
WPF经典教程之WPF控件内容模型
2014-10-05 00:54:29WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件,其主要分为四部分: • ContentControl • HeaderedContendControl • ItemsControl • HeaderedItemsControl 其继承关系请参考我上... -
WPF经典教程之WPF窗体
2014-10-05 00:32:25在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类(类型化窗体)。定义的窗体由两部分组成: 1、XAML文件。。...更多WPF资源:http://cleopard.download.csdn.net/ -
WPF经典教程之WPF应用程序管理
2014-10-05 00:28:49一、WPF应用程序由System.Windows.Application类进行管理 二、创建WPF应用程序 创建WPF应用程序有两种方式: 1、Visual Studio和Expression Blend默认的方式,使用App.xaml文件定义启动应用程序 App.xaml文件的内容... -
WPF分页DataGrid
2012-05-29 15:30:31最近用到WPF的表格控件,需要使用分页功能,找了很多例子都不是很满意。有些是模仿SL做的DataPager导航条,使用的时候还要和DataGrid组合使用,不是很方便。最好还是继承DataGrid的分页表格控件。 于是自己动手封装... -
WPF SolidColorBrush
2016-03-31 09:34:44 -
WPF学习笔记——没有前途的WPF
2018-11-09 10:30:05WPF学习笔记——没有前途的WPF分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
看上去,WPF比silverlight有前途一点。毕竟,微软还没有宣布,WPF停止更新。
但我怀疑,不久的将来,WPF也会步其子集silverlight的后尘,要么不再出后续版本,要么向HTML5 + CSS3转型。
WPF主要负责UI。虽然只要我们愿意,也可以像WINFORM那样,做出很强的逻辑处理程序,但其本意,只在于负责界面工作,有逻辑处理,也是跟界面有关。写WPF程序,一般会倾向于遵循MVVM模式吧。
这种思想挺不错,问题在于,WPF自己搞了一套界面定义语言:XAML。
多么复杂的一套东西!为了呈现一些样式,图片,又模板,又资源,层层嵌套,代码冗长得无以复加。我以前一直从事WEB开发,自问对HTML 、 CSS 都比较熟悉,按理看WPF的Style之类,不会觉得太困难,但事实上,那么多的代码,我头都大了。
为什么要这么做呢?进入互联网时代那么久了,WEB前端处理的界面是如此绚烂多彩,数以万计的程序员对CSS都是那样的了解,又何必另起炉灶,独辟蹊径,再搞一套什么XAML!可能当年WPF出来时,HTML5 和 CSS3 还没有出来,但HTML 和 CSS的确早已成为业界标准,人人耳熟能详,那么出个CSS + HTML的加强版不就行啦。
微软可能自大惯了,总以为自己能创立业界标准,搞了许多昙花一现的短命产品,苦了我们这批跟着微软屁股后面跑的微软系程序员,整天学着用这工具、用那工具,时间都浪费在这里,反而编程思想,真正有用的知识没有学到。
看看伟大的谷歌,人家搞个开发语言,要么是JAVA语法的安卓,要么是javascript的node.js,根本不需要去再学什么语法,下下紧扣互联网,智能手机,反观微软,给人的印象,还拼命停留在PC时代。
所以,现在因为工作需要,不得不用WPF,但我会注意学习MVVM的思想,而不会深究其界面的铺陈,能用就行。这是一种没有前途的语言。
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
-
WPF优秀开源代码合集
2013-01-27 23:14:16WPF优秀开源代码合集 -
WPF窗体自适应分辨率
2020-10-09 08:53:39WPF窗体使用Viewbox自适应分辨率 使用WPF创建一个窗体(Window)时,如果设置了固定的高度(Height)和宽度(Width),一旦用户的电脑分辨率过低,就会使得窗体及其中的内容无法完整地显示出来。要解决这个这个问题,有... -
WPF不规则按钮
2015-02-02 14:33:31漂亮的WPF不规则按钮-WPF不规则按钮 -
WPF详解
2018-11-28 20:31:04WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供... -
WPF多线程演示
2014-12-31 22:30:12WPF多线程演示 -
WPF滑动切换画面
2012-12-12 21:55:12WPF滑动切换画面,类似于触摸移动画面,listbox -
WPF 托盘显示
2019-06-29 09:24:59本文告诉大家如何在 WPF 实现在托盘显示,同时托盘可以右击打开菜单,双击执行指定的代码 -
WPF登录界面
2013-05-26 21:35:34WPF界面设计(很帅)+登录验证用户名跟密码固定值123+跳转功能+按钮的键盘快捷键添加(登录用键盘键enter替代) -
wpf入门第五篇 WPF with ECharts
2019-04-03 18:30:54本文是wpf入门系列第五篇,面向有winform或者web前端基础的、并且也有C#基础的同学。 ECharts是百度团队开发的开源免费的js图表控件库,非常强大,文档齐全。WPF中使用图表,除了可以选择devexpress或者oxyplot之类... -
WPF入门一:WPF和XAML简介
2018-04-11 09:16:35什么是WPFWindows Presentation Foundation的简称。专门用来编写程序表示层的技术和工具。 学习WPF的好处:学习WPF技术可以为WCF的学习锦上添花。WF设计工作流,而设计WF的语言就是Xaml。学习WPF后,Silverlight可以... -
WPF插件不能添加WPF窗体
2018-06-23 13:05:59刚开始用插件式开发练习项目时添加新项时却不能添加WPF窗体,只有一个用户控件能添加。后来发现是添加新建项目时添加的是类库就不行,改成添加WPF应用程序时可以正常添加。 但这不是一个好的解决方案,不符合插件式... -
WPF实现超酷样式按钮
2012-07-03 13:42:13WPF实现超酷样式按钮 WPF超酷样式按钮 WPF自定义按钮 WPF漂亮按钮 WPF按钮皮肤 -
WPF popup置顶
2016-05-27 09:43:39WPF popup置顶 -
WPF翻转动画示例
2013-04-10 17:29:29本示例利用WPF中的三维模型,以及三维变换,再加以动画功能做出来的水平翻转效果,即图形绕Z轴旋转。
-
cuberite:适用于Minecraft的轻便,快速和可扩展的游戏服务器-源码
-
Python专题精讲 企业级应用日志管理
-
沐风老师Scratch3.0快速入门视频教程
-
2021-1小时Django和Mysql数据库操作入门教程(新手入门)
-
ECShop 2.x/3.x SQL注入/任意代码执行漏洞复现
-
基于Django的电子商务网站设计--第九章 Python在线题库
-
scikit-learn官方英文PDFscikit-learn-docs.pdf
-
MySql.Data.dll
-
Book3 Antennae Techniques.pdf
-
VirtualApp:适用于Android的虚拟引擎(在商业版本中支持11.0)-源码
-
亿度云盘~Java小白入门实战
-
2021-01-28
-
记录一次安装 docker、gitlab,并进行数据迁移
-
人生点滴
-
Komugari:用Discord.js编写的简单,多功能Discord机器人-源码
-
Appium自动化测试套餐
-
成都链安宣布最新版Mercurity Swap协议通过安全审计
-
badssl.com:令人难忘的网站,用于针对错误的SSL配置测试客户端-源码
-
asdasd
-
discordcaptcha:Discord验证机器人-源码