久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VB.net學(xué)習(xí)筆記(十七)XAML

 百眼通 2014-10-31




一、聲明式編程

        前面學(xué)的大多都是命令式或過程式編程,,須具體描述某個功能的過程,、算法,怎么實現(xiàn),。


        命令式編程:命令“機(jī)器”如何去做事情(how),,這樣不管你想要的是什么(what),它都會按照你的命令實現(xiàn),。
        聲明式編程:告訴“機(jī)器”你想要的是什么(what),,讓機(jī)器想出如何去做(how),。

        簡單地說:聲明式編程要的是“結(jié)果”,命令式編程要的是“過程”

        例如:SQL語句就是聲明式,,它只說明需要的結(jié)果,,如:表中男性最高成績的前三名,至于怎么實現(xiàn),,比如怎么過慮男性

                              怎么排序,,怎么取得前三名,它都不關(guān)心,,它只要結(jié)果,。

                     而命令式編程則必須描述怎么過濾男性、怎么排序,、怎么取得前三名,。

 

          通俗的說,聲明式編程更象是一位領(lǐng)導(dǎo),,它只須交待給下屬,,他要的一個結(jié)果,而不去關(guān)心怎么去完成的這個過程,。

                              命令式編程更象是一位下屬,,它得具體去操作每個細(xì)節(jié),怎么實現(xiàn),,最后才得出結(jié)果,。

        

          VB.net是命令式語言,但也包含一些聲明式結(jié)構(gòu),。比如Handler子句就是聲明式結(jié)構(gòu),。

         XAML語言比較接近純粹的聲明式語言,它僅關(guān)注結(jié)果或當(dāng)前狀態(tài),,而不關(guān)注如何實現(xiàn),。


          為什么要有聲明式語言?

          用聲明式語言能簡單地說明要的結(jié)果,,當(dāng)這個語言(XAML)傳到另一個解讀的程序時,,它會根據(jù)這個結(jié)果,來具體實現(xiàn),。

         于是就把結(jié)果與實現(xiàn)分離,。可以想到的是程序的傳輸體積小了,,編程更標(biāo)準(zhǔn)化,、更高效,因為結(jié)果的實現(xiàn)都是由標(biāo)準(zhǔn)地進(jìn)行

          實現(xiàn)。


         文件-》新建項目,,選擇WPF應(yīng)用程序,,建立ProVB_XAML程序:        

        

          界面如上。

         窗體的XAML如下:

  1. <Window x:Class="MainWindow"  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     Title="MainWindow" Height="350" Width="525">  
  5.     <Grid>  
  6.           
  7.     </Grid>  
  8. </Window>  


          雙擊解決方案中Application.xaml,可以看到:

  1. <Application x:Class="Application"  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     StartupUri="MainWindow.xaml">  
  5.     <Application.Resources>  
  6.           
  7.     </Application.Resources>  
  8. </Application>  

         注意的是下面是一個語句中,,后面都是
  1. <Application x:Class="Application"  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     StartupUri="MainWindow.xaml">  

         xmlns是XML Namespaces的縮寫,,即XML命名空間。

        這四個屬性中:xmlns和xmlns:s分別是指的兩個命名空間,。默認(rèn)的命名空間是指xmlns所指的內(nèi)容,。

          但要用另一個怎么辦?用xmlns:x來指明另一個,,這樣要使用這個命名空間的內(nèi)容時就可以用前綴x:來指代,。

         于是沒有前綴(省略)的是指第一個,用了x:的是指的是第二個,。


         它只是定義了應(yīng)用程序環(huán)境,,后面幾個都是它的結(jié)節(jié),最后一個表示下步打開的是MainWindow.xaml文件,。

        Resource里面描述如何使用XAML聲明的對象的屬性,,如控件的顏色、形狀,、和行為等,。

               





二、XAML語言基礎(chǔ)


         前面從感官上認(rèn)識了聲明式編程與XAML,,再看看XAML幾個重要概念

        (具體學(xué)習(xí)www.w3schools.com)



      1,、XAML子集

             XAML還可以被用于其它平臺來表示非.net對象,XAML有以下幾個子集:

             WPF  XAML     描述WPF內(nèi)容的元素,,如矢量圖形,、控件以及文檔。

             XPS   XAML     是WPF XAML的一部分,,為格式化的電子文檔定義了一種XML表示方式,。(前面說過可以減小傳遞體積)

             Silvelight XAML     用于Silverlight程序的WPF XAML子集(主要用于二維圖形、動畫音頻,、視頻)

             WF    XAML      描述Windows工作流(WorkFlow)內(nèi)容的元素,。


      


     2、XAML編譯

               XML主要用于傳遞數(shù)據(jù),,但沒壓縮,。而WPF使用BAML(binary   Application  Markup Language二進(jìn)制應(yīng)用程序標(biāo)記語言)

              它實際上是XAML的二進(jìn)制表示,更減小了體積,。

              不必?fù)?dān)心如何由XAML轉(zhuǎn)為BAML,編譯器會在后臺自動執(zhí)行,當(dāng)然也可以不編譯(比如用戶界面須要自定義時)



     3,、XAML標(biāo)準(zhǔn)

               (1)XAML中所有元素都映射為一個.net類的實例,。元素的名稱也完全對應(yīng)于類名。

                           如元素<Button>指示W(wǎng)PF創(chuàng)建一個Button對象,。

                (2)與XML一樣,,可在一個元素中嵌套另一個元素。

                               <Grid>

                                       <Button>

                                            .....

                                       </Button>

                                </Grid>

                  (3)可通過特性(Attribute)來設(shè)置每個類的屬性(Property),。




      4,、頂級元素(根)

               與XML一樣,XAML只能使用一個頂級元素:

  1. <Window x:Class="MainWindow"  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     Title="MainWindow" Height="350" Width="525">  
  5.     <Grid>  
  6.           
  7.     </Grid>  
  8. </Window>  

          上面頂級元素就是Window,。


            頂級元素只能使用下面的:

                  Window元素

                  Page元素(與Window元素類似,,它僅用于可導(dǎo)航的應(yīng)用程序)

                  Application元素(它定義應(yīng)用程序資源和啟動設(shè)置)




     5、XAML的名稱空間

              每個元素生成時使用的名稱空間是不一樣,,要引用各個元素的空間顯得非常煩擾和混亂,,怎么有效的把它們組成到一個統(tǒng)一的

              名稱空間中來,使得簡捷有效呢,?


             答案是用另外的一個名稱空間來包含上面雜亂的空間,。于是形成了下面兩個統(tǒng)一的空間


            XMAL使用兩個名稱空間:

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

            (1)http://schemas.microsoft.com/winfx/2006/xaml/presentation

                       這是WPF的核心名稱空間,它包含了所有WPF類,,包括用于構(gòu)建用戶界面的控件,。它是默認(rèn)的名稱空間,

                        即省略前綴時,,就是指的是這個名稱空間

              (2)http://schemas.microsoft.com/winfx/2006/xaml

                        這是XAML名稱空間,。它包含各種XAML實用特性,這些特性(Attribute)會影響文檔的解釋方式,。

                         這個名稱空間被映射為前綴x,,意思是x是一個別名,指代的是這個空間,,只要前綴用了x:就說明用的是這個空間,。

                         使用形式如<x:ElementName>


            注意:XML名稱空間通常用的是URL字符,但這并不是網(wǎng)址,,用它可以區(qū)別是Microsoft公司而不是其它組織,,因為

                        schemas.com域是由Microsoft公司所擁有的,只有微軟會在XML空間名稱中使用它,。


            通過名稱空間(命名空間)XAML解析器可以找到正確的類,,如查找Window和Grid元素時,會先查默認(rèn)WPF的名稱空間,,

             再查找.net名稱空間,,直到找到System.Windows.Window類和System.Windows.Controls.Grid類為止,。




      6、代碼隱藏類

                通過XAML就可以構(gòu)造用戶界面,,但這就是外觀還需要一定的功能,,就需要一個連接包含實現(xiàn)代碼的方法。怎么實現(xiàn),?

                 XAML通過使用Class特性來完成:

                <Window x:Class="WindowsApplication.Windows1"

               Class用了前綴x:,,表示是XAML語言中更通用的部分。

               Class特性告訴XAML解析器使用指定的名稱生成一個新類,,該類繼承XML元素命名的類,。即:

                            上面創(chuàng)建了一個名為Window1的新類,該類繼承自Window基類,。

             關(guān)鍵:

                通過Partial Class部分類,,把一個類分成兩個或多個,并在編譯過的程序集中把這些獨立的部分融合成一起,,就形成 了

                界面與代碼的組合,。




 



三、XML語句


              XAML名稱空間中的3類XML語句:特性,、標(biāo)記擴(kuò)展,、XAML指令

             注意:特性(Attribute)與屬性(Property)兩者相似,但又不同,。


             1,、特性

                    XML中特性表示與XML節(jié)點相關(guān)的命名屬性。

                    節(jié)點對象可能有幾個特性,,如Name,、Margin、Text,,

                    特性只存在于節(jié)點的定義中,,不包含在XML的節(jié)點中:

                   

                  x:Class      配置 XAML 編譯,在標(biāo)記和代碼隱藏之間連接分部類,。代碼分部類在一個獨立的代碼文件中定義,,

                                      標(biāo)記分部類由代碼生成過程在 XAML 編譯期間創(chuàng)建。

  1. <object x:Class="namespace.classname"...>  
  2.   ...  
  3. </object>  

                 x:FieldModifier   修改 XAML 編譯行為,,使指定對象引用的字段被定義有 public 訪問權(quán)限而不是默認(rèn)的 private 行為,。

  1. <object x:FieldModifier="public".../>  

 

                 x:ClassModifier    在同時提供了 x:Class 的情況下,修改 XAML 編譯行為,。 具體而言,,不必創(chuàng)建有 Public 訪問級別

                                               (默認(rèn)值)的 class 分部類,提供的 x:Class 是以 NotPublic 的訪問級別創(chuàng)建的,。 此行為會影響生成

                                                 的程序集中的類的訪問級別,。

  1.  <object x:Class="namespace.classname" x:ClassModifier="NotPublic">  
  2.    ...  
  3. </object>  



                   x:Key           唯一標(biāo)識作為資源被創(chuàng)建和引用的元素,,這些資源存在于一個 ResourceDictionary 中。

  1. <ResourceDictionary>  
  2.   <object x:Key="stringKeyValue".../>  
  3. </ResourceDictionary>  


                 x:Name      唯一標(biāo)識對象元素,,可方便從代碼隱藏或一般代碼中訪問已實例化的對象,。應(yīng)用于支持的編程模型之后,

                                 x:Name 可視為等效于持有一個對象引用(由一個構(gòu)造函數(shù)返回)的變量,。

  1. <object x:Name="XAMLNameValue".../>  


                x:Subclass   在同時提供了 x:Class 的情況下,修改 XAML 標(biāo)記編譯行為,。 不必根據(jù) x:Class 類創(chuàng)建分部類,,而是將

                                     提供的 x:Class 創(chuàng)建為中間類,然后提供的派生類應(yīng)基于 x:Class,。

  1.  <object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">  
  2.    ...  
  3. </object>  


                 x:Shared     當(dāng)設(shè)置為 false 時,,會修改 WPF 資源檢索行為,以便特性化資源請求為每個請求創(chuàng)建一個新實例,,而不是

                                   所有請求共享同一個實例,。

  1. <ResourceDictionary>  
  2.   <object x:Shared="false".../>  
  3. </ResourceDictionary>  


               x:TypeArguments     將泛型的約束類型參數(shù)傳遞給泛型類型的構(gòu)造函數(shù)。

  1. <object x:TypeArguments="typeString" .../>  







                2,、標(biāo)記擴(kuò)展

                      允許包含格式,,體現(xiàn)Extensible Application XML中的Extensible(擴(kuò)展) 

                     x:Array    在XAML里創(chuàng)建一個數(shù)組。使用Array擴(kuò)展創(chuàng)建數(shù)組很容易,,但在詞法上和其他XAML擴(kuò)展不同,,它不需要使用大括號"{}",

                                   原因在于Array里面含有多個元素,。.

  1. <x:Array Type="typeName">  
  2.   arrayContents  
  3. </x:Array>  


                     x:Null     指定 null 作為通過一個 XAML 屬性設(shè)置的屬性的值,。
  1. <object property="{x:Null}" .../>  


  1. <object>  
  2.   <object.property>  
  3.     <x:Null />  
  4.   </object.property>  
  5. </object>  




                    x:Reference  引用在 XAML 標(biāo)記中其他地方聲明的實例。 參考涉及元素的 x:Name,。
                                         <object property="{x:Reference instancexName}" .../>
  1. <object>  
  2.   <object.property>  
  3.     <x:Reference Name="instancexName"/>  
  4.   </object.property>  
  5. </object>  




                    x:Static  按值引用以符合 公共語言規(guī)范 (CLS) 的方式定義的任何靜態(tài)代碼實體,。 引用的靜態(tài)屬性可以用來提供在 XAML 中的屬性的值。
                                 <object property="{x:Static prefix:typeName.staticMemberName}" .../>



                    x:Type       提供 CLR Type 對象,,該對象是指定的 XAML 類型的基礎(chǔ)類型,。
                              <object property="{x:Type prefix:typeNameValue}" .../>


                             <x:Type TypeName="prefix:typeNameValue"/>






             3、XAML指令
                     XAML一般不支持嵌入其它XML數(shù)據(jù)或代碼,,但可以通過兩個指令做到:
                      x:Code        允許在 XAML 生產(chǎn)內(nèi)放置代碼,。 這樣的代碼既可由任何編譯 XAML 的 XAML 處理器實現(xiàn)編譯,也可以留在 XAML 產(chǎn)品中以備

                                           后用,,例如由運行時解釋,。

  1. <x:Code>  
  2.    // code instructions, usually enclosed by CDATA...  
  3. </x:Code>  



                     x:XData    在 XAML 生產(chǎn)中開啟 XML 數(shù)據(jù)島的放置。 x:XData 中的 XML 元素不應(yīng)由 XAML 處理器處理,,就像它們屬于作用的

                                           默認(rèn) XAML 命名空間或任何其他 XAML 命名空間的一部分,。 x:XData 可包含任意格式正確的 XML,。

  1. <x:XData>  
  2.   <elementDataRoot>  
  3.     [elementData]  
  4.   </elementDataRoot>  
  5. </x:XData>  




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多