`
happmaoo
  • 浏览: 4473218 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

WPF UI介面的革新

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>
透過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函式,此函式會進入收取訊息的迴圈,直到此程式被關閉為止。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1594574


分享到:
评论

相关推荐

    Arthas-WPFUI-master_wpfui_wpf界面美化_support9hz_wpf菜单栏美化_Arthas-WPF

    《Arthas-WPFUI:打造精致的WPF界面与菜单栏美化》 在软件开发领域,用户界面(UI)的设计至关重要,它不仅影响到用户的使用体验,也直接影响到软件的受欢迎程度。对于Windows Presentation Foundation(WPF)平台...

    漂亮的WPFUI模板

    **WPF UI 模板详解** Windows Presentation Foundation (WPF) 是微软开发的一种用户界面框架,用于构建桌面应用程序。它提供了丰富的图形系统、强大的数据绑定功能、以及对2D和3D图形、图像、文本和媒体的支持。...

    非常漂亮的WPF UI框架 可更改主题

    标题中的“非常漂亮的WPF UI框架 可更改主题”指的是一个针对Windows Presentation Foundation(WPF)的用户界面(UI)框架,它具有美观的设计,并且允许开发者方便地更改应用程序的主题。这样的框架能提升桌面应用...

    一套好用的 wpfUI控件源码

    WPFUI控件是构建这些应用程序的核心元素,它们为开发者提供了多种组件,用于实现各种交互和展示功能。 这套"一套好用的 wpfUI控件源码"可能包含了一系列自定义或增强的WPF控件,这些控件可能在功能、性能或外观上...

    Arthas-WPFUI, 这是一个WPF的UI库(实际应该算个控件库吧).zip

    Arthas-WPFUI 是一个基于Windows Presentation Foundation (WPF) 的用户界面库,它提供了一系列自定义控件,旨在帮助开发者构建更加美观且功能丰富的桌面应用程序。由于被标记为"开源",这意味着该库是开放源代码的...

    Arthas-WPFUI-master_WPF_comingzfw_

    Arthas-WPFUI-master 是一个基于WPF(Windows Presentation Foundation)框架的用户界面库,由comingzfw 创建和维护。这个项目的主要目的是为开发者提供一套高效、易用且功能丰富的UI组件,以便于构建美观的Windows...

    WPF UI 设计

    **WPF UI设计** WPF(Windows Presentation Foundation)是微软.NET Framework的一部分,它提供了一种强大的用户界面(UI)设计工具,用于构建丰富的、交互式的桌面应用程序。在WPF中,UI设计涉及到多个方面,包括...

    WPF ModernUI(wpf 免费UI库)

    1.获取最新版本的modern UI for WPF 2.打开vs并创建一个新的WPF应用程序名为:MuiTest 3.添加FirstFloor.ModernUI.dll 4.定义ModernWindow继承于MainWindow 打开MainWindows.xaml,添加ModernUI 的 xmlns 名称空间和...

    WPF UI分析工具 Snoop

    **WPF UI分析工具 Snoop** 是一个强大的开发者工具,专为Windows Presentation Foundation(WPF)应用程序设计。它提供了一种直观且高效的方式来调试和分析WPF用户界面(UI),帮助开发者更好地理解和调整WPF应用的...

    Arthas-WPFUI-master.rar

    Arthas-WPFUI-master 是一个基于Windows Presentation Foundation (WPF) 的用户界面库,专为开发者提供丰富、美观的控件和元素,以便在构建桌面应用时快速、高效地设计出令人满意的用户界面。WPF是Microsoft推出的一...

    WPF UI虚拟化 DEMO

    WPF UI虚拟化 DEMO,包含文件常见展示形式,开源原代码地址:https://www.codeproject.com/Articles/64865/Enable-MultiSelect-in-WPF-ListView-2?msg=4796178#xx4796178xx

    WPF.UI-master.zip_WPF_WPF UI_WPF-UI_master ui_wpf.ui

    总结来说,WPF.UI-master.zip包含了一个与WPF UI相关的项目或库,可能包含了各种预定义的UI控件、样式、模板或者其他帮助开发者快速构建WPF应用程序的资源。利用WPF提供的特性,开发者可以创建出既美观又实用的桌面...

    C#基于WPF的前端登录UI框架-Win版源码.zip

    C#基于WPF的前端登录UI框架-Win版源码。基于C#-WPF的前端登录UI框架,流畅的动画效果。C#基于WPF的前端登录UI框架-Win版源码。基于C#-WPF的前端登录UI框架,流畅的动画效果。C#基于WPF的前端登录UI框架-Win版源码。...

    WPFUI.rar_WPF_WPF 单选题_wpf主界面_wpf炫丽ui_wpf界面

    在本主题中,我们将深入探讨一个基于WPF的UI设计实例——"WPFUI.rar",这个压缩包包含了一个具有横向裂开效果的简单UI界面,特别适用于实现wpf单选题、wpf主界面、wpf炫丽ui以及wpf界面的设计。 **1. WPF基础** WPF...

    基于.net core 3.1 的WPF UI控件库

    【标题】:“基于.net core 3.1 的WPF UI控件库” 【描述】:在.NET Core 3.1的框架下,Windows Presentation Foundation(WPF)为开发者提供了丰富的用户界面(UI)设计能力。这个WPF UI控件库是专为.NET Core 3.1...

    WPF UI数据绑定

    **WPF UI数据绑定** Windows Presentation Foundation (WPF) 是微软.NET Framework的一部分,它提供了一种强大的用户界面(UI)开发框架。其中,数据绑定是WPF中的核心特性,允许UI元素与应用程序中的数据源进行...

    轻量级C# WPF UI插件引用方便

    标题中的“轻量级C# WPF UI插件引用方便”意味着我们讨论的是一个设计简洁、体积小巧且易于集成到WPF应用中的UI插件。这种插件通常提供预设的界面元素和功能,以帮助开发者快速构建用户界面,而无需从头编写大量代码...

Global site tag (gtag.js) - Google Analytics