零元学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为实作案例. ? ...
随机推荐
- html5中的dom中的各种节点的层次关系是怎样的
html5中的dom中的各种节点的层次关系是怎样的 一.总结 一句话总结:Node节点是所有节点的基类,所以都继承它的方法 1.dom提供在js中动态修改html标签的作用 比如增加修改标签等,并且是 ...
- 【t019】window(单调队列)
Time Limit: 2 second Memory Limit: 256 MB [问题描述] 给你一个长度为N 的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右 ...
- Word Break II -- leetcode
Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...
- 高性能分布式应用开发中间件ICE介绍
作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构. 随后,RMI,EJB ...
- Spring boot传统部署
使用spring boot很方便,一个jar包就可以启动了,因为它里面内嵌了tomcat等服务器. 但是spring boot也提供了部署到独立服务器的方法. 如果你看文档的话,从jar转换为war包 ...
- maven webcollector java.lang.ClassNotFoundException: org.openqa.selenium.remote.SessionNotFoundException
使用webcollector时出现了如下异常 分析是依赖的问题,不仅要添加selenium-java,还要添加htmlunit-driver的依赖,注意不要添加成selenium-htmlunit-d ...
- 微信,支付宝,支付异步通知验签,notify_url
在支付接口开发中 ,当用户支付完成之后,阿里或者微信会向我们服务器发送一个支付结果的通知,里边带有一系列参数:其中特殊的是签名类型,和签名(他们根据这些参数做出来的签名). 我们的得到这些参数之后要去 ...
- 设置Oracle tnslsnr监听器口令
绿盟扫描提示引用程序脆弱账号 Oracle tnslsnr 监听器,加密主要为了防止监听被恶意远程关闭.关于这个安全问题的详细说明参见文字结尾转载的说明<Oracle的监听口令及监听器安全&g ...
- Fast-tracking approach for building routing topologies in fast-moving networks
In one embodiment, a local node in a communication network determines a set of its neighbor nodes, a ...
- 允许Android对于飞行模拟器
Android模拟器是公认的慢,并且不是一般的慢,即使在高性能的PC上,跟开发环境没关系,由于它就是慢.可是我们又必须使用模拟器,比方在測试Android不同版本号的兼容性时,或者在測试不同屏幕尺寸的 ...