原文地址:
http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-5-Basics-of-Layout-and-Events
系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners
原始碼: http://aka.ms/absbeginnerdevwp8
PDF版本: http://aka.ms/absbeginnerdevwp8pdf
我將在本課中討論布局,換句話說如何在應用程式的使用者介面上定位或者排列控制項。
本課的計劃是:
我們將討論兩個主要的用於布局和定位的元素:Grid和StackPanel。
對於Grid,我將討論定義行和列以及各種大小調整的選項和技術以充分利用Grid的功能。
接著,我們將學習StackPanel,並將應用程式從Grid布局調整為StackPanel布局,這將教會我們Grid和StackPanel之間的一些關鍵區別。
最後,我們將討論事件處理常式如何在XAML和C#中進行“串連”。
1. 理解網格的基礎知識
預設的Windows Phone頁面模板建立了一個稱為"ContentPanel"的<Grid>元素。
該Grid元素用於其他控制項的布局。它允許您定義行和列,然後每個控制項可以請求被放置在哪一行及哪一列中。
預設的Windows Phone頁面模板建立了一個稱為"ContentPanel"的<Grid>元素。
在預設的MainPage.xaml頁面模板中,在開始和結束標記<Grid></Grid>之間,Grid顯示為空白,它似乎沒有行或列的定義。然而即使他們未被顯式定義,預設情況下始終有一個行定義和列定義。他們佔據所有可用的垂直和水平空間以代表Grid中一個大的“單元”。任何放置在開始和結束<Grid></Grid>元素之間的項目被認為位於這個隱式的“單元”之中。
2. Grid的行定義 (RowDefinitions) 和列定義 (ColumnDefinitions)以及定義大小
"LayoutRoot" 網格是一個定義了行的Grid。該Grid定義了兩行:
請注意含有項目和頁面標題的StackPanel將自己放置在第一行中,該StackPanel有一個稱為Grid.Row=”0”的屬性。您使用從零開始的編號方案引用行和列。
注意通過設定屬性Grid.Row=”1”,內容面板網格 (ContentPanel Grid)將自己放置在第二行。
第一行將高度設定為”自動(Auto)”。第二行(行1)設定為"*"。有三種文法用來協助設定行和列的大小。對於XAML布局,高度和寬度是相對的,並受許多因素的影響。布局引擎考慮所有這些因素以確定在頁面上項目的實際位置。
例如,“自動”表示該行的高度足以容納放置在其中的所有控制項。如果最高的控制項高度是150像素,那麼這就是該行的實際高度。如果它只有100像素,那麼那就是該行的高度。因此“自動”表示高度是相對行內部的控制項。
星號稱為“比例縮放”,它表示該行的高度應該佔據所有其餘可用的高度。
這裡是另一種使用“比例縮放”的簡單樣本。我建立了一個項目,在內容面板中有針對三行的定義。請注意每一行的高度:
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/