Silverlight
http://kb.cnblogs.com/zt/silverlight/
http://www.cnblogs.com/gnielee/archive/2010/01/15/silverlight-wpf-develop-summary.html
【第一步】理解布局管理
先看Silverlight4离线文档中的介绍
容器 |
说明 |
---|---|
Canvas |
在 x,y 空间中绝对定位子元素。 |
StackPanel |
相对于水平或垂直堆栈中的另一个子元素来定位子元素。 |
Grid |
在行和列中定位子元素。 |
【第二步】Canvas面板介绍
Canvas面板是一种很基础的布局面板,它可以定义一个区域,在该区域中可以使用相对于该区域的坐标显式定位子元素。
你可以通过一种XAML的特性--“附加属性”来对Canvas中的元素进行定位,Canvas 为启用布局的 Panel 元素之一。每个子对象都呈现在 Canvas 区域中。通过指定 x 和 y 坐标,可以控制对象在 Canvas 中的定位。这些坐标以像素为单位。x 和 y 坐标通常使用 Canvas.Left 和 Canvas.Top 的附加属性来指定。Canvas.Left 指定对象与包含它的 Canvas 的左侧之间的距离(x 坐标);Canvas.Top 指定对象与包含它的 Canvas 的顶部之间的距离(y 坐标)。
下面就打开昨天的“StudySilverlight”代码,将<Grid>先注释掉,我们写一个<Canvas>容器,向容器中添加两个按钮,指定其距离Canvas左侧的距离为50像素,距离上边为150像素,代码如下:
<Canvas x:Name="TestCanvas" Background="Silver">
<Button x:Name="btnTest1" Content="按钮1" Width="100" Height="50" Canvas.Left="50" Canvas.Top="100"></Button>
<Button x:Name="btnTest2" Content="按钮2" Width="100" Height="50" Canvas.Left="50" Canvas.Top="200"></Button>
</Canvas>
添加两个按钮,设置在Canvas的布局后,显示结果如下:
Canvas适用于其中包含的UI元素比较固定的情况,但是你如果想向程序中添加更多的控件,或者UI需要改变大小或能够移动,Canvas显得就不是那么灵活了,那样的话,你不得不忙于手写代码来移动Canvas内的东西,所以,应付这种情况,更好的办法是使用其他带有相关功能的布局方法,接下来介绍下StackPanel。
【第三步】StackPanel面板介绍
StackPanel是一种简单的布局面板,它支持用行或列的方式来定位其中包含的控件。它常用于安排页面上的一个很小部分的UI,例如,我们可以用下面的方式在页面上垂直排布三个按钮,代码如下:
<StackPanel x:Name="TestStackPanel" Background="Silver">
<Button x:Name="btnTest1" Content="按钮1" Width="100" Height="50" Margin="10"></Button>
<Button x:Name="btnTest2" Content="按钮2" Width="100" Height="50" Margin="10"></Button>
<Button x:Name="btnTest3" Content="按钮3" Width="100" Height="50" Margin="10"></Button>
</StackPanel>
在运行时,StackPanel会自动的在一个垂直的堆叠(Stack)中排列按钮,显示结果如下:
如果,我们在<StackPanel>中添加“Orientation="Horizontal"”附加属性的话,显示结果就会变成下图:
【第四步】Grid面板介绍
为什么把最重要的Grid放到最后呢?哎呀,实在是因为太实用、太重要了嘛,放在最下面当地基,呵呵~
Grid控件是最灵活的布局面板,它支持多行和多列的方式排布,在概念上,它和HTML中的Table类似,但是不同于Table的是,你不需要把控件内嵌到标记中,而是通过定义<Grid.RowDefinitions>和<Grid.ColumnDefinitions>属性来定义控件所处的Grid的行或列,这两个属性是定义在<Grid>标签内,这样,你就可以在控件的附加属性中指定它属于哪一行哪一列,例如:
<Grid x:Name="TestGrid" ShowGridLines="True" Background="Silver">
<Grid.RowDefinitions>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110"></ColumnDefinition>
<ColumnDefinition Width="110"></ColumnDefinition>
<ColumnDefinition Width="110"></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
其中“ShowGridLines="True"”是可以显示分割线的,这样便于演示,我们就定义了一个三行三列的类似于表格的Grid,这样还不行,我们往里面添加几个按钮试试。在</Grid.ColumnDefinitions>下面添加按钮,代码如下:
<Button x:Name="btnTest1" Content="按钮1" Width="100" Height="50" Grid.Row="1" Grid.Column="0"></Button>
<Button x:Name="btnTest2" Content="按钮2" Width="100" Height="50" Grid.Row="2" Grid.Column="1"></Button>
<Button x:Name="btnTest3" Content="按钮3" Width="100" Height="50" Grid.Row="0" Grid.Column="1"></Button>
<Button x:Name="btnTest4" Content="按钮4" Width="100" Height="50" Grid.Row="1" Grid.Column="2"></Button>
通过Grid.Column和Grid.Row,我们指定按钮的位置在第几行第几列,在Grid中定义多行和多列的时候,还可以预先设置行和列的宽度或高度,灵活性明显要高于上两种方法。显示结果如下:
Silverlight的更多相关文章
- Silverlight 后台设置 button 纯色背景
silverlight Button直接设置其background为某一颜色往往达不到效果.因为其内置模板把按钮背景弄成一个渐变画刷.所以想要纯色的背景就修改其模板. 在后台修改模板的代码如下: St ...
- 添加Silverlight应用到HTML
Silverlight是跨浏览器,跨客户平台的浏览器插件,可以应用在Windows,Linux,Mac等平台.作为浏览器插件,Silverlight可以像Flash一样,很方便的嵌套在HTML页面中, ...
- Silverlight 手鼓达人-仿太鼓达人 开源
Silverlight 手鼓达人-仿太鼓达人 介绍 手鼓达人是本人2012年中silverlight最火的一段时间开发的,本来目的只是想研究一下silverlight做游戏和做应用有何不同,但是后面 ...
- silverlight使用小计(先做记录后续整理)
1.Grid: a.通过获取指定行的高度和指定列的宽度来获取指定单元格的宽高 b.几种宽高默认值: 宽高(Width/Heigth):1* 最大宽高(MaxWidth/MaxHeigth):正无穷大 ...
- SilverLight抛出 System.InvalidOperationException: 超出了2083 的最大URI
在SilverLight中对于抛出 System.InvalidOperationException: 超出了 2083 的最大 URI 长度 的异常 处理 其实很简单 在 EntityFramewo ...
- 【Silverlight】打开Silverlight程序报错,"未找到导入的项目......请确认<Import>声明中的路径正确,且磁盘上存在该文件"
在打开Silverlight程序时,报错(如图所示),程序使用的是Visual Studio 2013和最新的Silverlight版本(Silverlight5). 然后我在网上找了下说:Silve ...
- Silverlight 使用DataContractJsonSerializer序列化与反序列化 Json
环境说明:Silverlight 5.1,.Net Framework 4.0 1.添加引用System.ServiceModel.Web.dll. 因为 System.Runtime.Seria ...
- Silverlight及WPF中实现自定义BusyIndicator
在开发Silverlight或者WPF项目时,当我们调用Web服务来加载一些数据时,由于数据量比较大需要较长的时间,需要用户等待,为了给用户友好的提示和避免用户在加载数据过程中进行重复操作,我们通常使 ...
- Silverlight和WPF中DataContractJsonSerializer对时间的处理差异
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com Silverlight脱胎于WPF,他们的行为不完全并不完全相同,DataContractJsonSerializ ...
- [SL] Silverlight + WCF Demo项目
I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来: ...
随机推荐
- endnote设置文献第二行悬挂缩进办法
参考:http://blog.sina.com.cn/s/blog_62b13cf201014lfr.html 使用[endnote]插入文献后,如果文献稍长些,有第二行,第二行会顶格开始.并且这个 ...
- 1.1-java创建包和类的方法
1.new-package-命名方法com打头.中间名称.后台要创建的class 2.创建class- new-class 选择一下主方法 代码示例 编译完保存一下就能输出信息,一直没有保存才 ...
- Hibernate中一对多和多对一关系
1.单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系 部门--人员 使用人员时如果只需要获取对应部门信息(user.getdept ...
- ARPPING
http://www.tuicool.com/articles/M7B3umj http://lixcto.blog.51cto.com/4834175/1571838/
- WPF控件
1:内容控件(Content Controls)2:条目控件(Items Controls)3:文本控件(Text Controls)4:范围控件(Range Controls) 一:内容控件 内容控 ...
- 讲解JS的promise,这篇是专业认真的!
http://www.zhangxinxu.com/wordpress/2014/02/es6-javascript-promise-%E6%84%9F%E6%80%A7%E8%AE%A4%E7%9F ...
- Bootstrap看厌了?试试Metro UI CSS吧
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:Bootstrap作为一款超级流行的前端框架,已经成为很多人的首选,不过有时未免有点审 ...
- DTMF的原理分析
转自:http://blog.csdn.net/wangwenwen/article/details/8264925 1. DTMF原理 DTMF(Double Tone MulitiFrequenc ...
- git分支使用
1.查看远程服务器分支 git branch -a 2.查看本地分支 git branch 3.切换分支 git checkout master 4.删除远程分支 git push origin :b ...
- 在Asp.Net MVC中设定site路径所对应的默认action
设置路由的default的Controller和Action可以达到我们预期的效果,代码如下所示: public class RouteConfig { public static void Regi ...