WPF UI介面的革新

WPFUI进阶--完整了解wpf的控件和布局容器及应用 无论是winform还是wfp,布局容器都是属于控件的一种,只不过说布局容器是一种“装控件的控件”。这里我们来梳理一下他们的关系和使用方法,并且详细介绍他们的使用及注意事项。 阅读详情
 
透過MicrosoftWindows VistaWPF的強力行銷,相信許多讀者對於WPF的UI能力只有驚豔二字可以形容,對於如何使用WPF來達到這些效果,基於雜誌與網路上已有相當多的文章討論,筆者於此就不再重述了,直接將主軸放在WPF的核心,也就是她是如何建構出達到這些效果的環境。WPF強大的UI介面來自於兩個關鍵技術,一是繪製控件的系統,在傳統的Windows程式中,多半是使用Windows內建的控件來建構UI介面,這些控件有ComboBox、TextBox、RichTextBox、Button等等,直接使用這些控件除了可以給予使用者一致的操作介面外,也由於她們是Windows內建的控件,所以效能上也有一定程度的表現,但這樣一來,控件的外觀也受到了限制,對於ComboBox中顯示多欄資料、將TextBox旋轉45度等效果均難以達成,當然!許多熟悉Windows的程序員會提出,要達到這些效果,只要不使用內建的控件,自行建立Window物件,然後繪製所要的外觀即可,是的!這的確是於過往時代達到這些效果的方法之一,但!這實在是太繁瑣了,因為除了外觀外,程序員還得處理相當多的訊息,簡略的說!當想制作一個可旋轉的TextBox時,程序員除了繪制外觀外,還得處理鍵盤、滑鼠等訊息。在WPF時代,這一切都將變得簡單,因為WPF中幾乎所有的控件都是由WPF繪制出來的,這可以使用Spy++工具來觀察Windows Forms與WPF程式來證實(上方是WPF程式,下方是Windows Forms程式)。
這兩個程式的UI介面是相同的,但讀者可以由圖中看出,Windows Forms(下方)的視窗中還擁有button2、button1等子控件,但上方的WPF僅有一個視窗,這就是WPF的Big Handle概念,只使用一個Windows所提供的基礎物件:Window,而這個Window下的所有子控件皆為WPF所畫出並管理,所以Spy++只能看到一個基礎物件Window。因為WPF是畫出控件的,這也意味著要在WPF中將TextBox旋轉是可能的,而事實上!WPF中的控件已經提供了旋轉的能力,即使程序員有需求欲撰寫自訂的控件,也只需繼承自UIElement(WPF中UI控件的基礎類別)即可擁有旋轉的能力。那麼訊息部份該如何處理呢?這就得談到WPF的第二個關鍵技術:自成一格的訊息系統,當使用者於Window上移動滑鼠時,Window會收到來自Windows系統的WM_MOUSEMOVE訊息,接著Window會依據訊息中的X、Y指標資訊,取得對應的UIElement物件來轉送訊息,整個運行的模擬圖如下。
WPFWindow模式下,Dispatcher負責收取來自Windows的訊息,再轉送給各個視窗,也就是WindowHwndSource物件,此物件會一一呼叫掛載的InputProvider物件來處理輸入訊息,此例中掛載了兩個InputProvider物件:HwndKeyboardInputProvider、、HwndMouseInputProvider,分別處理鍵盤及滑鼠訊息,以HwndMouseInputProvider來說,當收到滑鼠訊息後,她會先計算鼠標位置,找到對應的UIElement,然後會呼叫InputManager來派送訊息至該UIElement。那Dispatcher又是由誰喚起的呢?以Window模式的WPF程式來說,答案是Application物件的Run函式,她會呼叫DispatcherRun函式,此函式會進入收取訊息的迴圈,直到此程式被關閉為止。
 
wpfui:一个开源免费具有现代化设计趋势的WPF控件库 wpfui是一款开源免费(MIT协议)具有现代化设计趋势的WPF界面库。wpfuiwpf的界面开发提供了流畅的体验,提供了一个简单的方法,让使用WPF编写的应用程序跟上现代设计趋势。截止写这篇文章,该项目获得了6.7k starts。最近我也在使用wpfui,整体使用下来感觉非常不错,因此想写一篇文章介绍一下wpfui 阅读详情

相关推荐

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6931

WPF基础之UI布局

知识点:知识点:如果包含的元素超过了面板空间,它只会截断多出的内容。元素的Margin属性用于使元素之间产生一定得间隔,当元素空间大于其内容的空间时,剩余空间将由HorizontalAlignment和 VerticalAlignment属性来决定如何分配。WrapPanel【环绕面板】:WrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够时就会自动调整进行换行,后续排序按照从上至下或从左至右的顺序进行。

yigu4011的博客 2585

优刻得首个「国产千卡智算集群」落地,支持智源千亿大模型训练

在人工智能引领的时代浪潮中,算力已成为技术进步与创新的核心驱动力。面对当下AI算力需求的飙升、高端AI芯片供应受限的挑战,加之OpenAI带来的技术封锁,唯有坚定不移的发展自主可控的国产技术方案,持续壮大国产智算集群规模,才能一路突破围追堵截,进一步促进国产大模型产业生态繁荣。集群还提供了完善高效的软件栈工具,集成多种主流的深度学习编程框架,通过测试验证,确保了对行业领先人工智能模型的高效支持,做到开箱即用,用户可快速投入模型的开发和部署,加速了其在人工智能领域的布局和发展。方面取得了显著成效。

Ucloud_TShare的博客 1442

5款开源、美观、强大的WPF UI组件库

经常看到有小伙伴在DotNetGuide技术社区微信交流群WPF有什么好用或者好看的UI组件库?,今天大姚给大家分享5款开源、美观、强大、简单易用的WPF UI组件库。WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创建出吸引人且交互性强的应用程序。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 4506

好用的WPF开源UI框架项目

为了满足用户需求,对Newbeecoder.UI开源界面框架项目进行功能扩充,新增数据库轻量级ORM模块、数据访问模型(Model)模块、Excel操作模块、绘图功能。 ORM模块支持Sql Server,MySql,Sqlite等主流数据库。一对多或者多对多的映射关系,能快速连接和操作数据库表,支持多种组合查询和新增,修改数据表。 (Model)模块对数据表字段映射和封装,它提供了服务器端验证,当模型属性上使用这些特性时。可对字符非空,最大长度,值范围,两个属性相同,正则表达式字段验证。 Excel

软件技术的专栏 3万+

TIA博途V13安装包合集(basic+pro+startdrive+UPD3更新包等)

内容概要:本文档提供了一个包含TIA博途V13不同版本安装包的下载链接,包括basic版、pro版以及UPD3更新包。。;适合人群:需要使用或更新TIA博途V13软件的工程师、技术人员及相关从业人员。;使用场景及目标:①当用户的设备需要安装TIA博途V13软件时;②已有TIA博途V13软件但需要通过UPD3更新包进行版本更新时。;其他说明:请注意检查所使用的安装包是否符合设备系统的要求,并确保从正规渠道获取资源以保障安全。同时,在安装过程中如遇问题可参考官方文档或向专业人士寻求帮助。

上一篇: 3月14日相约CSDN聊天室: ASP.NET 想说爱你并不件容易的事?
下一篇: 瀏覽器平台上的戰爭,Silverlight,Flash,Flex,JavaFX
Code6421
博客等级 码龄20年 259粉丝 102原创
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值