成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Silverlight布局系統(tǒng)正確優(yōu)化方法

開發(fā) 開發(fā)工具
Silverlight布局系統(tǒng)有時(shí)候往往會(huì)使開發(fā)人員看起來(lái)不夠滿意。不過(guò)不要緊,我們可以采用各種方法來(lái)進(jìn)行一定的優(yōu)化。

Silverlight的開發(fā)工具的使用之所以能被廣大開發(fā)者們所接受,除了其功能的強(qiáng)大之外,還有一點(diǎn)就是應(yīng)用的靈活性。它的各種特點(diǎn)決定了其在這一領(lǐng)域中的領(lǐng)先地位。在這里我們將會(huì)為大家介紹一下Silverlight布局系統(tǒng)的優(yōu)化方法。#t#

我對(duì)Silverlight布局系統(tǒng)一直感到不滿,原因無(wú)他,太過(guò)羅嗦爾。它靈活是足夠靈活了,但對(duì)于界面布局并沒有提供一個(gè)簡(jiǎn)潔的表達(dá)機(jī)制,使得即使非常常見的界面也總是生成一大坨又臭又長(zhǎng)的XAML,寫得累,看的人更累。特別是和競(jìng)爭(zhēng)對(duì)手Flex的布局機(jī)制比較,F(xiàn)lex可以說(shuō)既靈活又簡(jiǎn)單,Silverlight則是既靈活又麻煩。

Silverlight里面常用的布局容器幾乎都可以挑挑毛病:

Canvas:只支持絕對(duì)坐標(biāo)布局使得Canvas在應(yīng)用程序布局方面純粹是個(gè)雞肋,要求稍微靈活一點(diǎn)的界面就派不上用場(chǎng)了。Flex也有一個(gè)Canvas,不過(guò)Flex Canvas支持左/中/右對(duì)齊,并且可以指定絕對(duì)寬度或相對(duì)寬度,所以Flex Canvas比Silverlight Canvas要好用得多,在各種界面布局里也是常見的選擇。

StackPanel:StackPanel不支持Grid的百分比布局是很大的遺憾。很多時(shí)候,我只需要單行或單列布局,但控件則需要絕對(duì)/相對(duì)混合布局,StackPanel不能提供這種靈活性。這使得我不得不使用語(yǔ)法更加羅嗦的Grid。

Grid:如果和GridSplitter聯(lián)合做多面板布局的話,99%的情況下需要關(guān)心的無(wú)非是左右或上下兩個(gè)面板,而Grid和GridSplitter需要指定一大堆屬性才能正常工作,增加了無(wú)謂的負(fù)擔(dān)。

在忍受這些毛病很長(zhǎng)時(shí)間以后,我終于決定拋開Silverlight的默認(rèn)布局容器,自己寫一套更加方便的自定義Silverlight布局系統(tǒng)管理器。你可以猜到,我寫的這套容器很大程度上參考了Flex,甚至大部分類的命名都向Flex看齊——比如HBox、VBox。和Silverlight內(nèi)置類沖突的則換個(gè)名字,比如FlexCanvas模擬了Flex的Canvas組件,HSplitBox相當(dāng)于Flex HDevideBox,HeaderBox相當(dāng)于Flex Panel。

編寫自定義容器實(shí)際上比原先想象的要簡(jiǎn)單,無(wú)非是實(shí)現(xiàn)MeasureOverride/ArrangeOverride兩個(gè)方法而已。只是要考慮到各種布局情況需要仔細(xì)計(jì)算。另外一點(diǎn)不滿的地方是,創(chuàng)建Dependency Property的語(yǔ)法純粹是折磨人的工作。

這里僅舉一個(gè)常見的Silverlight布局系統(tǒng)例子,你可以比較一下用自定義布局可以比默認(rèn)的布局系統(tǒng)節(jié)省多少代碼。

例子: 我們都很熟悉的瀏覽器地址欄,文本框隨容器自動(dòng)擴(kuò)展。

用Silverlight布局:

 

  1. < Grid> 
  2. < Grid.ColumnDefinations> 
  3. < ColumnDefination Width="Auto" /> 
  4. < ColumnDefination Width="*" /> 
  5. < ColumnDefination Width="Auto" /> 
  6. < /Grid.ColumnDefinations> 
  7. < TextBlock Grid.Column="0" 
    Text="Address" /> 
  8. < TextBox Grid.Column="1" /> 
  9. < Button Grid.Column="2"
     Content="Go" /> 
  10. < /Grid> 

自定義布局:

 

  1. < yh:HBox> 
  2. < TextBlock Text="Address" /> 
  3. < TextBox yh:Box.Width="100%" /> 
  4. < Button Content="Go" /> 
  5. < /yh:HBox> 

Silverlight布局系統(tǒng)的介紹就到這里,希望對(duì)大家有些幫助。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-03-01 17:44:39

Silverlight

2009-12-31 15:05:00

Silverlight

2009-12-31 10:58:31

silverlight

2009-12-31 11:23:23

Silverlight

2009-12-08 14:10:55

Silverlight

2009-12-29 18:09:00

Silverlight

2009-12-30 17:35:21

Silverlight

2024-04-24 08:25:00

性能Android生命周期

2014-07-29 15:23:06

Android

2009-12-30 15:08:04

Silverlight

2019-03-05 10:20:49

WebWebpack分離數(shù)據(jù)

2009-12-30 15:42:08

Silverlight

2017-07-10 13:09:45

前端Flexbox

2009-12-31 16:18:44

Silverlight

2009-12-30 13:51:43

Silverlight

2009-12-30 14:44:04

Silverlight

2010-01-04 17:29:00

Silverlight

2009-12-29 17:47:36

Silverlight

2009-12-30 15:26:02

Silverlight

2009-12-31 11:35:20

Silverlight
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品国产视频 | 国产91久久久久 | 成人亚洲精品 | 国产精品欧美一区二区三区 | 日韩在线不卡视频 | 超碰在线播| 欧美视频一区二区三区 | 久草免费在线视频 | 久久国产三级 | 精品成人一区二区 | 久久精品99久久 | 日韩中文字幕在线视频 | 日韩国产精品一区二区三区 | 97超在线视频 | 国产成人a亚洲精品 | 福利社午夜影院 | 久久国产激情视频 | 视频在线一区二区 | 精品国产一区二区三区在线观看 | 精品久久久久久久久久 | 欧美1区 | 99精品在线观看 | 在线欧美亚洲 | 激情国产 | 色五月激情五月 | 亚洲天堂av在线 | 亚洲精品视频在线看 | av在线播放网站 | 亚洲综合二区 | 91看片免费版 | 亚洲美女av网站 | 在线国产视频观看 | 激情亚洲 | 国产精品资源在线 | 一级看片| 天天搞夜夜操 | 一区二区不卡 | av高清| 在线中文一区 | 国产91九色 | 久久精品一区二区三区四区 |