天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

深入解讀Silverlight的布局原理

  對(duì)于Silverlight學(xué)習(xí)來說,首先要面對(duì)的應(yīng)該是布局:你得把元素放到你想擺放的位置,然后是考慮元素的層次以及可見性,之后可能你想讓它動(dòng)起來,就學(xué)習(xí)動(dòng)畫,最后理解更深入之后,可能會(huì)開發(fā)如Behavior之類的行為,或者設(shè)置復(fù)雜的控件狀態(tài),模板。

  很多教程是從使用Grid開始,然后是Canvas,StackPanel之類的控件,他教你怎樣設(shè)置元素的位置。然后就沒有下文,很少會(huì)去講解布局的原理,不過如果是看Silverlight SDK,是能看到的。其實(shí)最好的教程就是Silverlight SDK,包括像兩個(gè)不同的SL插件(即使它們?cè)诓煌臑g覽器窗口)之間的通信這些一般人沒有注意到的特性,里面都是講得清清楚楚。所以,建議不要花錢去買Silverlight相關(guān)的書。

  其實(shí),不是能使用Grid之類的就知道了布局,Silverlight布局包含更多的東西,理解布局系統(tǒng)有利于更深層的理解Silverlight,從而開發(fā)更得心應(yīng)手。

  遺憾的事初學(xué)者理解布局也許有點(diǎn)復(fù)雜,可能是因?yàn)槠渲械倪f歸,但是我們生活中其實(shí)有很多遞歸系統(tǒng)的。我試著學(xué)習(xí)郭欣用鐵路系統(tǒng)描述網(wǎng)絡(luò)傳輸一樣,也來構(gòu)造這樣一個(gè)場(chǎng)景。

  布局原理

  首先,所有元素的最頂層必須是一個(gè)容器(通常如Grid,Canvas,StackPanel等),然后在容器中擺放元素,容器中也可能包含容器。這里的容器就像行政長官一樣,他們負(fù)責(zé)分配元素的空間。同樣,首先頂層的容器一個(gè)一個(gè)的問自己的子元素:你想要多大的空間?如果子元素也是容器,它又繼續(xù)向下遞歸,最后又頂層開始向上匯報(bào)。這就是所謂的測(cè)量。

  測(cè)量完之后就是排列,這個(gè)時(shí)候每個(gè)容器知道自己每個(gè)子元素想要的空間大小,就按自己的實(shí)際情況進(jìn)行分配。一致遞歸到最底層。

  注意上述紅色字體部分,通過前面的故事,我們知道,資金的發(fā)放完全由行政長官控制,不管下面想要多少,都是他說了算,他甚至可以一分錢都不給,或者給你超多你的預(yù)期的數(shù)目。

  這里的容器也一樣,容器擁有完全的分配權(quán),不過這里容器不僅僅是分配空間,還決定元素的位置,因?yàn)榭臻g總是跟位置相關(guān)的。也就是說,容器說想給你多大空間你就只有有那么大的空間可使用,容器想讓你擺在什么位置,你就得乖乖呆著什么位置。

  只不過,這里的容器是遵守規(guī)則的,它遵守開發(fā)者指定的規(guī)則:

  Grid的規(guī)則是:我把我這個(gè)空間分成一格一格的格子,看起來有些像Table,在我里面的元素我完全按照附加屬性Grid.Row,Grid.Column,Grid.RowSpan,Grid.ColumnSpan來決定其大小和位置。

  Canvas的規(guī)則是:我讀取附加屬性Canvas.Left,Canvas.Right,Canvas.Top,Canvas.Bottom,并以此來決定元素的位置,我通常不限制元素開用空間

  StackPanel的規(guī)則是:根據(jù)附加屬性,我要么讓元素橫著排列,要么豎著排列。

  聰明的你是不是立刻想到,我可不可以定義自己的規(guī)則呢?哈哈,當(dāng)然可以!

  比如,你可以讓Panel里面的元素隨機(jī)分布,并可讓它們隨機(jī)旋轉(zhuǎn)一定角度,這不就是現(xiàn)在某些很酷的相冊(cè)嗎;你可以讓元素排成一個(gè)圓形,這不就是Blend里面的例子嗎;你可以讓元素根據(jù)某個(gè)Path元素排列,這不就是PathListBox嗎?如下圖:

Silverlight中的布局

Silverlight中的布局

  所以,你現(xiàn)在是不是覺得布局不是那么簡(jiǎn)單并且很好玩呢?

  下面我們就來看怎么實(shí)現(xiàn)這么酷的東西!

  基礎(chǔ)框架-FrameworkElement

  為Silverlight布局中涉及的對(duì)象提供公共API的框架。FrameworkElement還定義在Silverlight中與數(shù)據(jù)綁定,對(duì)象樹和對(duì)象生存期功能區(qū)域相關(guān)的API。

  繼承層次結(jié)構(gòu):

 System.Object
System.Windows.DependencyObject
System.Windows.UIElement
System.Windows.FrameworkElement
System.Windows.Controls.Border
System.Windows.Controls.Control
System.Windows.Controls.Panel
System.Windows.Shapes.Shape

NET技術(shù)深入解讀Silverlight的布局原理,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕A片视频一区二区 中文字幕AV在线一二三区 | 国产AV天堂亚洲AV麻豆 | 国产亚洲精品久久7777777 | 接吻吃胸摸下面啪啪教程 | 免费人成在线观看视频不卡 | 国产综合18久久久久久软件 | 无人区日本电影在线观看高清 | 久久伊人免费 | 让男人玩尿道的女人 | 啪啪做羞羞事小黄文 | 自拍偷拍12p | 国产精品成人影院在线观看 | 久久亚洲精品AV无码四区 | 老板吻我下身好爽到高潮 | 中文字幕无码亚洲视频 | 久久综合九色综合国产 | 真人女人无遮挡内谢免费视频% | 国产成人综合视频 | 高傲教师麻麻被同学调教123 | 捆绑白丝粉色JK震动捧喷白浆 | 久久中文字幕亚洲 | 亚洲视频在线观看地址 | jiz中国zz | 欧美18videosex| 亚洲午夜久久久精品影院 | 久久在精品线影院精品国产 | 亚洲嫩草AV永久无码精品无码 | WW.国产人妻人伦精品 | 爆乳啪啪无码成人二区亚洲欧美 | 白丝美女被狂躁免费漫画 | 久久伊人影视 | 国产午夜永久福利视频在线观看 | 亚洲乱码国产一区三区 | 国产偷国产偷亚洲高清人乐享 | 国产精品免费久久久久影院 | 年轻的搜子8中字在线观看 年轻的朋友4在线看中文字幕 | 精品国产免费人成视频 | 亚洲中字幕永久在线观看 | 成人a视频在线观看 | 18video性欧美19sex高清 | 亚洲一区二区三区乱码在线欧洲 |