原文地址:
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/