零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」
原文:零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」
本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」。
?
本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」。
?
?
?
就是要让不会的新手都看的懂!
?
?
?
<实至名归的容器大哥>
Blend 4内的容器有很多种,比较常运用到的除了有Grid、Canvas、Border、StackPanel,还有可以配合运用的DockPanel、GridSplitter、以及新增加的PathListBox等等。
当然还有其他的容器,以後会一一介绍。
?
开启一个新专案,我们可以看到在Blend 4主要工作区就是以Grid做为预设的容器。
![]()
?
简单来说,Grid就像是html的table一样,为设计页面时最外层的版型容器,而Grid也是最常用到的布局容器。
学好布局容器是很重要的,若不会善用容器,很容易就会发生做不出预期相同的版面,而你会了Grid,就等於会了一半的容器了!!
?
?
<以实做学会Grid> 运用(一)
本段要教大家如何运用Grid的特性,让页面里的物件不会因为浏览器的视窗大小而改变物件大小。
?
01
打开Blend 4 後选择Top Menu的 File->New Project(快捷键Shift+Ctrl+N)。
选择Silverlight Application+ Website为你的项目类型;把主要工作区大小改为800*600後,我们把版面切成九格。
在Blend4 中分割行跟列,只需要将滑鼠放在主要版面的外围深蓝色区块上,单击滑鼠後就会产生分割线。
分割完後,我们运用分割线的位置设定把版面调成九等份,如下图:
![]()
可以看到Layout的width的地方,我们设定为0.33,值为Star。
以原始码来看,行跟列皆为0".33*",0.33後面的星号,代表着该行或该列宽度或高度将会跟着内容的改变而改变;
相反的,若是没有星号,代表着该行列不会因为内容的改变而改变,会固定宽高值。
?
1: <UserControl
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: x:Class="SilverlightApplication3.MainPage"
5: Width="800" Height="600">
6:?
7: <Grid x:Name="LayoutRoot" Background="White">
8: <Grid.RowDefinitions>
9: <RowDefinition Height="0.33*"/>
10: <RowDefinition Height="0.33*"/>
11: <RowDefinition Height="0.33*"/>
12: </Grid.RowDefinitions>
13: <Grid.ColumnDefinitions>
14: <ColumnDefinition Width="0.33*"/>
15: <ColumnDefinition Width="0.33*"/>
16: <ColumnDefinition Width="0.33*"/>
17: </Grid.ColumnDefinitions>
18: </Grid>
19: </UserControl>
?
02
接着我们放入9个相同大小的Rectangle。
我随意的在9格里面各放一个之後,全选它们,一并设定长、宽,还有边界。
如下图:
![]()
?
完成後,按下F5,我们来看看效果。
?
请拖动浏览器右下角,使浏览器的视窗变大或缩小。
发现了吗?我们所置入的9个Rectangle并没有因为浏览器的视窗变大或缩小而有所改变。
?
那若是我们要让所置入的物件能跟着浏览器等比例的变大或缩小该如何设定呢?
?
<以实做学会Grid> 运用(二)
本段要教大家如何运用Grid的特性,让页面里的物件可以藉着浏览器视窗缩放达到等比例的改变。
?
01
我们直接使用刚刚的专案来做应用。
同样的,我们全选9个Rectangle後,点选Layout的width还有heigh後方的Set of Auto;为了清楚的分隔每个Rectangle,所以我们把边界的距离拉大,接设为10。
接着,UserControl的width与heigh也要一并改为Auto,会变成下图:
![]()
?
Rectangle都不见了!?
别紧张,我们看看原始码:
1: <UserControl
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: x:Class="SilverlightApplication3.MainPage">
5:?
6: <Grid x:Name="LayoutRoot" Background="White">
7: <Grid.RowDefinitions>
8: <RowDefinition Height="0.333*"/>
9: <RowDefinition Height="0.333*"/>
10: <RowDefinition Height="0.333*"/>
11: </Grid.RowDefinitions>
12: <Grid.ColumnDefinitions>
13: <ColumnDefinition Width="0.334*"/>
14: <ColumnDefinition Width="0.334*"/>
15: <ColumnDefinition Width="0.332*"/>
16: </Grid.ColumnDefinitions>
17: <Rectangle Fill="#FF212168" Margin="10" Stroke="Black"/>
18: <Rectangle Grid.Column="1" Fill="#FF212168" Margin="10" Stroke="Black"/>
19: <Rectangle Grid.Column="2" Fill="#FF212168" Margin="10" Stroke="Black"/>
20: <Rectangle Fill="#FF212168" Margin="10" Grid.Row="1" Stroke="Black"/>
21: <Rectangle Grid.Column="1" Fill="#FF212168" Margin="10" Grid.Row="1" Stroke="Black"/>
22: <Rectangle Grid.Column="2" Fill="#FF212168" Margin="10" Grid.Row="1" Stroke="Black"/>
23: <Rectangle Fill="#FF212168" Margin="10" Grid.Row="2" Stroke="Black"/>
24: <Rectangle Grid.Column="1" Fill="#FF212168" Margin="10" Grid.Row="2" Stroke="Black"/>
25: <Rectangle Grid.Column="2" Fill="#FF212168" Margin="10" Grid.Row="2" Stroke="Black"/>
26: </Grid>
27: </UserControl>
我们可以很明显的看到,原本在原始码第五行的地方,UserControl的width为800、height为600;
?
而现在我们UserControl的width与height皆为Auto,所以原始码不会显示,原因是因为Auto是UserControl容器的预设值。
往下拉,有9个我们设计好的Rectangle。
?
完成後,按下F5,我们来看看效果。
?
请拖动浏览器右下角,使浏览器的视窗变大或缩小。
你会了解,我们所置入的9个Rectangle能跟着浏览器等比例的变大或缩小。
?
Grid厉害的地方不只这样喔!
想知道Grid的还能怎麽使用吗?
~下集待续~
?
?
?
本篇的教学就到此。
?
(若有任何错误的地方,请各位前辈或同好能不吝指教,小女子都会虚心接受;若是你喜欢我的教学,请给我点鼓励,谢谢。)
一步一步迈向HIE之路
喜欢我文章请推我一下或给我个回应,你的鼓励会给我无限的动力喔!
若是您有其他问题或是特别需要,请在文章回应处留言,我会尽快回覆您
零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」的更多相关文章
- 零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II
原文:零元学Expression Blend 4 - Chapter 14 用实例了解布局容器系列-「Pathlistbox」II 本章将延续上一章的范例,步骤解析. 本章将延续上一章的范例,步骤解析 ...
- 零元学Expression Blend 4 - Chapter 12 用实例了解布局容器系列-「Viewbox」
原文:零元学Expression Blend 4 - Chapter 12 用实例了解布局容器系列-「Viewbox」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Bl ...
- 零元学Expression Blend 4 - Chapter 13 用实例了解布局容器系列-「Pathlistbox」I
原文:零元学Expression Blend 4 - Chapter 13 用实例了解布局容器系列-「Pathlistbox」I 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局 ...
- 零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」
原文:零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」 将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blend ...
- 零元学Expression Blend 4 - Chapter 10 用实例了解布局容器系列-「StackPanel」
原文:零元学Expression Blend 4 - Chapter 10 用实例了解布局容器系列-「StackPanel」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器 ...
- 零元学Expression Blend 4 - Chapter 9 用实例了解布局容器系列-「Canvas」
原文:零元学Expression Blend 4 - Chapter 9 用实例了解布局容器系列-「Canvas」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blen ...
- 零元学Expression Blend 4 - Chapter 18 用实例了解互动控制项「CheckBox」II
原文:零元学Expression Blend 4 - Chapter 18 用实例了解互动控制项「CheckBox」II 延续上一章的CheckBox教学,本章将以实作继续延伸更灵活的运用CheckB ...
- 零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I
原文:零元学Expression Blend 4 - Chapter 17 用实例了解互动控制项「CheckBox」I 本章将教大家如何运用CheckBox做实作上的变化:教你如何把CheckBox变 ...
- 零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II
原文:零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II 本章将教大家如何制作自己的Button,并以玻璃质感Button为实作案例. ? ...
随机推荐
- AE中网络分析的实现 的各个类之间的关系
原文AE中网络分析的实现 的各个类之间的关系 1. 创建网络数据集 在ArcCatalog中勾选网络分析模块,新建个人地理信息数据库—>新建要素数据集—>批量导入要素—>创建 ...
- activiti自己定义流程之整合(五):启动流程时获取自己定义表单
流程定义部署之后,自然就是流程定义列表了,但和前一节一样的是,这里也是和之前单独的activiti没什么差别.因此也不多说.我们先看看列表页面以及相应的代码,然后在一步步说明点击启动button时怎样 ...
- Java 出现内存溢出的定位以及解决方案
在上一节中Java虚拟机内存分布 说了Java虚拟机中分为五个区域,而且也知道了在Java程序计数器区域不会出现OOM(OutOfMemeryError),那么以下就对除了程序计数器以外的四个区域 ...
- ANR问题分析实例
ANR监测机制包含三种: Service ANR,前台进程中Service生命周期不能超过20秒,后台进程中Service的生命周期不能超过200秒. 在启动Service时,抛出定时消息SERVIC ...
- Linux初接触设置笔记01
没事装Linux尝试一下,来来回回装无数次,把刚开始需要设置的东西自己收藏一下,针对Centos7 装完Centos默认会覆盖windows引导,所以首先要做的是恢复windows的引导,如果不恢复, ...
- python2.x脚本转换为python3.x脚本的方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dushu990/article/details/73549174 python2.x脚本转换为pyt ...
- 云主机启动Node服务后,关闭控制台,无法访问的问题
之前一直用node app.js操作,开启服务后,关闭控制台,仍然可以正常访问我的网站.但昨晚新买腾讯云的服务器后,发现关闭控制台后,就无法访问网站了.然后给腾讯云发了个工单.腾讯云的工程师给了一篇技 ...
- Dictionary实现(收藏的)
源文献:https://www.cnblogs.com/InCerry/p/10325290.html 对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可 ...
- Vim 写 iOS App
Vim 写 iOS App 我们都知道 Vim 和 Emacs 都是文本编辑器中的上古神器,你也许用 ctags,cscopes 配合 Vim 完成过大型 C 或者 C++ 的开发,你也许配合过其他插 ...
- yii2.0获取最后一条ID
$r_id=Yii::$app->db->getLastInsertID();