<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一起學(xué)WPF系列(3):窗體

      概述

      Windows Presentation Foundation (WPF) 是下一代顯示系統(tǒng),用于生成能帶給用戶震撼視覺體驗(yàn)的 Windows 客戶端應(yīng)用程序。使用 WPF,您可以創(chuàng)建廣泛的獨(dú)立應(yīng)用程序以及瀏覽器承載的應(yīng)用程序。一直以來,我對(duì)界面的東西是不怎么感興趣的,可自從Windows Presentation Foundation (WPF)發(fā)布之后,也不免為它能實(shí)現(xiàn)的絢麗的界面所吸引,《一起學(xué)WPF系列》和大家一起分享學(xué)習(xí)WPF學(xué)習(xí)經(jīng)驗(yàn)的系列文章。

      本文是《一起學(xué)WPF系列》中的第三篇,開始學(xué)習(xí)WPF的基礎(chǔ)知識(shí).

      本文目的:

      學(xué)習(xí)和掌握WPF中窗體的構(gòu)成,創(chuàng)建方式,生命周期,位置,大小,狀態(tài),外觀等控制方式。

      窗體構(gòu)成:

      窗體是WPF中最重要的一個(gè)呈現(xiàn)控件,它能夠容納其他的WPF控件,用戶通常也是通過窗口來與WPF應(yīng)用程序進(jìn)行數(shù)據(jù)交互的。而一個(gè)WPF窗體被分為兩個(gè)區(qū)域:客戶區(qū)和非客戶區(qū)。它的構(gòu)成圖如下:

      非客戶端包括普通窗體的通用組成部分,它們?yōu)椋?

      1. 邊框(Border)
      2. 標(biāo)題欄(Title Bar)
      3. 圖標(biāo)(Icon)
      4. 最大化,最小化,還原,關(guān)閉按鈕
      5. 系統(tǒng)菜單

      而客戶端,我們也可以稱之為工作區(qū),它是用于供開發(fā)人員自定義內(nèi)容的區(qū)域。在WPF中,窗體的實(shí)現(xiàn)類為:System.Windows.Window.它在架構(gòu)中層次結(jié)構(gòu)如下圖所示:

      由層次結(jié)構(gòu)中可以看出,窗體也是一種控件。它們與Button,UserControl等同屬于WPF架構(gòu)中的FrameworkElement.

      創(chuàng)建方式:

      如果在創(chuàng)建項(xiàng)目的時(shí)候,選擇的是WPF Application項(xiàng)目模板,那么在項(xiàng)目創(chuàng)建完成之后,便會(huì)有一個(gè)名為Window1的窗體。這個(gè)在上文我們已經(jīng)有所體驗(yàn),如果需要添加新的窗體,可以在資源管理器中右擊項(xiàng)目,然后選擇Add-Window..,如下圖所示:

      如果要使用XAML來創(chuàng)建窗體,代碼如下:

      <Window x:Class="Jillzhang.Wpf.WindowStudy.Window1" 

      xmlns
      ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

      xmlns:x
      ="http://schemas.microsoft.com/winfx/2006/xaml" > 

      </Window> 

      窗體的后臺(tái)代碼為:

      /// <summary> 

      /// Interaction logic for Window1.xaml 

      /// </summary> 


      public partial class Window1 : Window 



      public Window1() 



      InitializeComponent(); 

      }
       

      }
       

      下面的列表是對(duì)XAML文件的解析

      名稱

      類型

      說明

      Window

      元素(Element)

      用于聲明一個(gè)WPF窗體

      x:Class

      屬性(必須)

      指示窗體對(duì)應(yīng)的的類,它繼承于System.Windows.Window

      xmlns

      屬性(必須)

      XAML命名空間

      xmlns:x

      屬性必須

      XAML架構(gòu)中的x:的命名空間

      x:Class指示的類默認(rèn)情況下是使一個(gè)partical 類,它的構(gòu)造函數(shù)必須包含InitializeComponent();

      生命周期:

      窗口的生命周期對(duì)編程的時(shí)候影響甚大,如果不清楚窗口的生命周期,一不小心很可能就引發(fā)對(duì)象空引用的錯(cuò)誤,一個(gè)窗體它的生命周期圖如下:

      首先我們先來看看打開窗體的步驟,要想在應(yīng)用程序中打開一個(gè)窗體,必須先創(chuàng)建窗體的對(duì)象實(shí)例,方法有兩個(gè): 1)通過StartupUri來設(shè)定2)通過編程方式來實(shí)現(xiàn)。第一種方式我們?cè)谏衔闹幸呀?jīng)提到過,第二種方式可書寫代碼如下:

      Window1 window = new Window1(); 
      window.Show(); 

      注意如果是在Application的Startup事件中實(shí)例化窗口,窗口引用會(huì)自動(dòng)添加到Applicaton.Windows集合中,并且第一個(gè)實(shí)例化的窗口被當(dāng)成Application.MainWindow。在調(diào)用Show()方法進(jìn)行窗體顯示之前,窗體會(huì)進(jìn)行初始化工作,此時(shí)會(huì)引發(fā)SourceInitialized事件,此后呈現(xiàn)窗體,當(dāng)窗體第一次顯示,便引發(fā)窗體的Activated事件,使得該窗體稱為活動(dòng)窗體,活動(dòng)窗體能夠接受用戶輸入,激活窗口操作完成之后,窗體的Load事件才會(huì)被觸發(fā),其后引發(fā)ContentRendered事件,當(dāng)ContentRendered引發(fā)后表示窗體已經(jīng)被打開。而此時(shí),如果切換了窗體,那么原本的活動(dòng)窗口便會(huì)引發(fā)Deactivated事件,而切換到的窗口引發(fā)Activated事件。窗體是否處于活動(dòng)狀態(tài),可以通過IsActive屬性來確定。下面看一下窗體的關(guān)閉過程,點(diǎn)擊非客戶區(qū)的關(guān)閉按鈕或者用系統(tǒng)熱鍵Alt+F4,調(diào)用窗體的Close()方法或者用其他方式關(guān)閉窗體的時(shí)候,都會(huì)觸發(fā)窗體的Closing事件和Closed事件。Closing在窗口關(guān)閉之前,用于提供一種機(jī)制用于阻止窗口關(guān)閉,比如關(guān)閉之前檢查數(shù)據(jù)是否已經(jīng)被成功提交從而決定關(guān)閉操作是否繼續(xù)。如果要阻止關(guān)閉窗口,可以將Closing事件的CacelEventArg參數(shù)的Cacel屬性為True。在Closing中沒有被取消的窗體將觸發(fā)Closed事件。

      注:雖然msdn上窗體事件的執(zhí)行順序如上圖所示,可我測(cè)試過的結(jié)果和上圖略有差異,就是Loaded的位置,我測(cè)試的結(jié)果如下圖所示:

      我的測(cè)試結(jié)果效果為:

      這和msdn的說明不太一致,搞不明白為何!不過我相信我的測(cè)試結(jié)果應(yīng)該是正確的

      起始位置:

      窗口的起始位置可以通過WindowStartupLocation屬性來確定,他們的可選選項(xiàng)為:

      位置

      說明

      CenterOwner

      所有者的中間位置

      CenterScreen

      屏幕的中間位置

      Manual

      根據(jù)Left和Top來確定起始位置,如果沒有設(shè)置,將由Windows決定位置

       另外,窗口還有Z-Order和Topmost屬性用于設(shè)置窗體在Z軸上的位置。設(shè)置了Topmost的窗體將無法被其他窗體覆蓋。當(dāng)主窗體Topmost屬性為false的效果為:

      而主窗體的Topmost為true時(shí),效果為:

      大小:

      窗體的大小由Width和Height或者用SizeToContent來決定 ,SizeToContent包括四個(gè)選項(xiàng)

      選項(xiàng)

      說明

      Height

      窗體只自動(dòng)適應(yīng)內(nèi)容高度

      Width

      窗體只自動(dòng)適應(yīng)內(nèi)容長(zhǎng)度

      Manual

      窗體大小由windows來決定

      WidthAndHeight

      窗體自動(dòng)適應(yīng)內(nèi)容長(zhǎng)度和高度

       狀態(tài):

      窗體狀態(tài)有如下三種:

      狀態(tài)

      說明

      Normal

      正常窗體

      Maximized

      最大化

      Minimized

      最小化

       外觀:

      窗體樣式包括四個(gè):

      窗體樣式

      說明

      None

      不包括非客戶區(qū)的標(biāo)題欄,系統(tǒng)菜單,最大,最小,關(guān)閉按鈕,圖標(biāo)等

      SingleBorderWindow

      普通邊框

      ThreeDBorderWindow

      3D邊框

      ToolWindow

      不包括圖標(biāo),最大,最小化按鈕

       

       范例項(xiàng)目

       /Files/jillzhang/Jillzhang.Wpf.WindowStudy.rar

      結(jié)束語

      WPF中的窗口與 Window Form基本相似,但增加了一些額特殊功能,文中有關(guān)事件執(zhí)行順序我現(xiàn)在還有疑惑,因?yàn)槲覝y(cè)試結(jié)果和msdn說明不太一致,希望明白人指點(diǎn)一二,不勝感激

       

      posted @ 2008-04-05 20:10  Robin Zhang  閱讀(31520)  評(píng)論(27)    收藏  舉報(bào)
      主站蜘蛛池模板: 欧美日韩国产综合草草| 沭阳县| 亚洲乱熟乱熟女一区二区| 中国熟女仑乱hd| 中文成人在线| 高清国产一区二区无遮挡| 亚洲欧洲一区二区三区久久| 爱性久久久久久久久| 国产女人在线视频| 亚洲女同精品久久女同| 国产片av在线观看国语| 国产精品毛片一区二区| 性欧美vr高清极品| 2020国产欧洲精品网站| 久久97人人超人人超碰超国产| 亚洲国产aⅴ成人精品无吗| 亚洲理论电影在线观看| 武陟县| 日韩精品亚洲国产成人av| 精品中文人妻中文字幕| 亚洲三区在线观看无套内射 | 区一区二区三区中文字幕| 免费无码肉片在线观看| 熟妇人妻不卡中文字幕| 亚洲综合av一区二区三区| 日韩中文字幕国产精品| 777天堂麻豆爱综合视频| 四虎成人精品在永久免费| 日韩中文字幕有码av| 蜜桃精品成人影片| 亚洲精品中文字幕一区二| 久久99热只有频精品6狠狠| 无码国产偷倩在线播放| 国产精品一区二区传媒蜜臀| 日韩人妻无码一区二区三区综合部| 国产免费性感美女被插视频| 四虎永久免费很黄的视频| 亚洲高清国产拍精品5G| 亚洲欧美日韩精品色xxx| 成人免费ā片在线观看| 久久精品国产再热青青青|