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

Windows Phone開發(5):室內裝修

移動開發
相信我們下過象棋就知道,棋盤上有橫向的,縱向的很多網格線,而棋子就是參照這些網格線來放置的,對,在WP頁面布局中我們把這樣的布局稱為網格布局,對應的控件為Grid。千萬別小看這個Grid控件,它可是非常好用的,而且也比較靈活,對的,當我們創建一個新頁面時,VS為我們生生的XAML中,正是使用了Grid控件進行布局的。

為什么叫室內裝修呢?呵呵,其實說的是布局,具體些嘛,就是在一個頁面中,你如何去擺放你的控件,如何管理它們,你說,像不像我們剛搬進新住所,要 “裝修”一番?買一套什么樣的茶幾和杯具(我說的“杯具”指的是原意,不要理解錯了),或者沙發什么的,該怎么放,擺在哪里好看,其實,我們做界面設計也 是差不多這個道理。

相信我們下過象棋就知道,棋盤上有橫向的,縱向的很多網格線,而棋子就是參照這些網格線來放置的,對,在WP頁面布局中我們把這樣的布局稱為網格布局,對應的控件為Grid。

千萬別小看這個Grid控件,它可是非常好用的,而且也比較靈活,對的,當我們創建一個新頁面時,VS為我們生生的XAML中,正是使用了Grid控件進行布局的。

既然是網格了,肯定會有行和列的,而我們的控件就是按需要放到由這些行和列共同產生的單元格中,就是我們在做網頁排版時用到的table標簽,應該說是非常類似的。

下面我們一起動手做個小練習,通過這個練習,我們可以從一種更直觀的角度去了解Grid控件的用法。

1、啟動VS,新建一個WP應用程序,不用我多說了,都會了。

2、刪除頁面中的根Grid,整個刪除。如下圖所示。


 

3、然后,替換為以下XAML代碼。

  1. <Grid x:Name="Root"
  2.     <Grid.ColumnDefinitions> 
  3.         <ColumnDefinition Width="*"/> 
  4.         <ColumnDefinition Width="*"/> 
  5.     </Grid.ColumnDefinitions> 
  6.     <Grid.RowDefinitions> 
  7.         <RowDefinition Height="*"/> 
  8.         <RowDefinition Height="*"/> 
  9.     </Grid.RowDefinitions> 
  10. </Grid> 

這樣我們就定義了一個兩行兩列的網格布局,也就是整個頁面被劃分為4個方塊。
先簡單說一下行的高,列的寬的表示方法,如果你用過WPF,你應該很清楚了。
(1)可以用數值,double類型,如120.667,這個數字與屏幕分辨率無關,運行運行庫會自行調整;

(2)*:這個星號是什么意思呢?就像上面的例子,我都用了*,這么說是說不清楚的,我舉個例子吧。
比如,我把一個網格分為3行,而每一行的高度都是*,則表示三個行的高度是平均分配的,都占整個網格高度的1/3.
如果我第一行的高為2*,第二行的高為*,第三行的高為3*,那么又該如何分配呢?
先別急,把上面的代碼改一下,我們就可以直觀地看到效果了。為了方便觀察,我把ShowGridLines的值改為True,這樣網格線就會顯示。

  1. <Grid x:Name="Root" ShowGridLines="True"
  2.     <Grid.RowDefinitions> 
  3.         <RowDefinition Height="2*"/> 
  4.         <RowDefinition Height="*"/> 
  5.         <RowDefinition Height="3*"/> 
  6.     </Grid.RowDefinitions> 
  7. </Grid> 

好,現在我們看看設計視圖上面顯示的結果。


其實上面三行的高分別為2*,1*和3*,1可以省略,它的意思就是把整個網格的高度平均分成2 + 1 + 3 = 6份,而2*就占其中2份,1*就占其中1份,3*就占其中3份,也就是說,它們分別占總高度的2/6,1/6,3/6.
怎么樣,找到規律了嗎?
再來一例。

  1. <Grid x:Name="Root" ShowGridLines="True"
  2.     <Grid.RowDefinitions> 
  3.         <RowDefinition Height="3*"/> 
  4.         <RowDefinition Height="7*"/> 
  5.     </Grid.RowDefinitions> 
  6. </Grid> 

這時候,我們再看看設計視圖有啥變化?


上面的示例是把整個容器的高度平均分為 3 + 7 = 10 份,而第一行的高度占總高度的3/10,第二行的高度占總高度的7/10.
現在明白了一些了沒?
再看看下面的例子:

  1. <Grid x:Name="Root" ShowGridLines="True"
  2.     <Grid.RowDefinitions> 
  3.         <RowDefinition Height="86"/> 
  4.         <RowDefinition Height="5*"/> 
  5.         <RowDefinition Height="3*"/> 
  6.     </Grid.RowDefinitions> 
  7. </Grid> 

同理,第一行固定86,這是一個絕對的值,然后呢,把剩下的高度,就是除了86之外的,平均分為 5 + 3 = 8 份,第二行占了剩下的高度的5/8,第三行占了剩下的高度的3/8.

(3)Auto,不用多解釋,從單詞的含義就知道了,就是根內容自動調整。

列的定義與行是相類似的,只不過列定義寬度,行定義高度而已。
如果以上三種值同時出現呢?原理是一樣的,自己思考一下吧,不懂的就多寫代碼觀察。

那么,我們如何把內容放到對應的單元格內呢?Grid的行序號和列序號是從0開始的,如第一列就是0,第二行就是1等,具體怎么操作呢?
在聲明其內容時,通過附加屬性來確定內容應放在哪個單元格,如下面例子。

  1. <Grid x:Name="Root" ShowGridLines="True"
  2.     <Grid.RowDefinitions> 
  3.         <RowDefinition Height="*"/> 
  4.         <RowDefinition Height="*"/> 
  5.     </Grid.RowDefinitions> 
  6.     <Grid.ColumnDefinitions> 
  7.         <ColumnDefinition Width="*"/> 
  8.         <ColumnDefinition Width="*"/> 
  9.     </Grid.ColumnDefinitions> 
  10.     <!-- 內容 --> 
  11.     <TextBlock Grid.Column="0" Grid.Row="0" Text="第1行第1列" FontSize="35"/> 
  12.     <Rectangle Fill="Yellow" Grid.Column="1" Grid.Row="0" Margin="68"/> 
  13.     <Button Grid.Column="0" Grid.Row="1" Content="第2行第1列" FontSize="32"/> 
  14.     <Ellipse Fill="Blue" Height="95" Width="180" Grid.Column="1" Grid.Row="1"/> 
  15. </Grid> 

運行效果如下:


好了,網格布局就吹到這里,下面接著看另一個較簡單的布局——StackPanel,嗯,它是一個面板,它的子內容的布局非常簡單,就兩種方式:橫向和縱向,它是沿直線分布的,要么水平,要么垂直,反正是線性分布,就類似于我們說的數據結構中的棧隊列,先進后出。
例一,水平布局。

  1. <StackPanel Orientation="Horizontal" Height="100"
  2.     <Button Content="按鈕1"/> 
  3.     <Button Content="按鈕2"/> 
  4.     <Button Content="按鈕3"/> 
  5. </StackPanel> 

效果如下:


例二:垂直布局。

  1. <StackPanel Orientation="Vertical" Width="300"
  2.     <TextBlock Text="文本一" FontSize="80"/> 
  3.     <TextBlock Text="文本二" FontSize="80"/> 
  4.     <TextBlock Text="文本三" FontSize="80"/> 
  5. </StackPanel> 

運行效果如下:
(圖6)運行效果如下:


最后,我們來看看還有一種通過絕對定位的布局控件——Canvas。
它就像我們的二維坐標系,但與我們在平面幾何中不同的是,Canvas的原點在左上角,相信寫過可視化程序的朋友都知道了。
要注意的是,Canvas不知道具體要為哪些子內容設置坐標,所以,它的Top和Left值視具體情況而定,因此這兩個屬性都是附加屬性,也就是它附加在 放置在Canvas中的子元素要設置的具本位置而使用,所以每個子元素的定位都通過附加的Canvas.Top和Canvas.Left來設置。

  1. <Canvas> 
  2.     <Rectangle Fill="Orange" Canvas.Left="37" Canvas.Top="116" Height="165" Width="220" /> 
  3.     <Path Data="M0,0 L0,8 L12,8 Z" Fill="Silver" 
  4.           Canvas.Left="127" 
  5.           Canvas.Top="204" 
  6.           Width="260" 
  7.           Height="235" Stretch="Fill"/> 
  8. </Canvas> 

還有的是,ZIndex是用于設置子元素的順序,從0開始,默認為0,值越大,它越在頂層,比如上面的例子,我們發現,后面添加的三角形把前一個矩形擋住了,那如何讓矩形在其它圖形之上呢?對,把ZIndex設置一個較大的值就行了,如:

  1. <Canvas> 
  2.     <Rectangle Fill="Orange" Canvas.Left="37" Canvas.Top="116" 
  3.                Height="165" Width="220" 
  4.                Canvas.ZIndex="1"/> 
  5.     <Path Data="M0,0 L0,8 L12,8 Z" Fill="Silver" 
  6.           Canvas.Left="127" 
  7.           Canvas.Top="204" 
  8.           Width="260" 
  9.           Height="235" Stretch="Fill"/> 
  10. </Canvas> 

責任編輯:閆佳明 來源: oschina
相關推薦

2013-07-30 12:37:56

Windows PhoWindows Pho

2010-04-21 17:07:54

Windows Pho

2013-04-17 14:00:06

Windows PhoWindows Pho

2011-06-07 12:42:15

Windows Pho

2013-04-16 17:02:50

Windows Pho概論

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2022-07-12 10:20:12

人工智能室內設計

2014-10-13 18:11:40

百會CRM

2010-04-08 17:40:23

Windows Pho

2010-07-16 15:29:02

Windows Pho

2012-08-16 10:35:50

Windows Pho

2011-06-07 11:35:38

Windows Pho

2013-04-17 13:27:04

Windows PhoWindows Pho

2013-07-31 13:03:51

Windows PhoWindows Pho

2013-04-17 14:47:19

Windows PhoWindows Pho

2011-12-03 20:03:26

iPhone

2013-04-19 16:52:24

Windows PhoWindows Pho

2013-07-31 12:50:39

搭建Windows PWindows Pho

2013-07-31 13:13:50

Windows PhoMVVM模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲女优在线播放 | 亚洲视频免费在线观看 | 中文字幕乱码一区二区三区 | 国产成人精品一区二区三区视频 | 夜久久 | 午夜精品久久久 | 国产精品久久久亚洲 | 欧美精品欧美精品系列 | 国产一区二区影院 | 国产成人精品a视频一区www | 日韩在线视频免费观看 | 成人在线播放 | 在线啊v| 久久亚洲综合 | 婷婷福利视频导航 | 日韩二 | 蜜桃视频一区二区三区 | 999久久久久久久久6666 | 中文字幕成人av | 日韩成人性视频 | 久草视频2 | 一区二区三区在线播放视频 | 在线色网址| 欧美一区日韩一区 | 久久久久久久一区 | 在线观看第一区 | 亚洲免费一区二区 | 国产精品久久久久久久久久久新郎 | 色屁屁在线观看 | 中文字幕精品视频 | 超碰超碰 | 欧美精品1区2区3区 精品国产欧美一区二区 | 国产真实乱全部视频 | 国产黄色大片 | 亚洲第一区久久 | 精品无码三级在线观看视频 | 久久久久久久电影 | www.天天操.com | 三级免费毛片 | 99国产精品一区二区三区 | 久久久国产精品视频 |