【细说windows8开发——UI篇】布局和视图

来源:互联网 发布:linux ssh开启 编辑:程序博客网 时间:2024/06/06 09:51

本篇的的主要内容


****所有代码为完整代码,不是部分或者添加的代码,均通过测试。

****欢迎问题反馈和交流  : zhu_yifan@me.com


  • 布局分类

  • Auto和*

  • Panel

  • StackPanel

  • Grid



win8的布局分为绝对布局静态布局两大类。

绝对布局中提供了Canvas来支持绝对定位(XAML框架),比如   Canvas.Left   和   Canvas.Top


动态布局则是在不同的电脑分辨率下都能显示完好的布局,我们需要定义的就是子元素相对于父元素的位置就可以了

MSDN提供了三个建议,对于动态布局的使用,大家来看看

1、将 Height 和 Width 设置为Auto,Auto支持控件和Grid和StackPanel布局。

2、对于包含文本的控件,移除Height和Width属性,而是设置MinWidth和MinHeight属性,这可以防止文本在等比例缩放时变得不可读。

3、在Grid布局中设置RowDefinition和ColumnDefinition属性


Auto 和 *

Auto 自动尺寸可以使空间更好的适应它的内容,即使内容的大小改变。

* 号是根据比重用来分配可用空间的。

比如我们有一个拥有四列的Grid布局,我们可以这样设置

Column_1Auto这一列的设置可以使它自动适应自己的内容Column_2*当Auto属性的列自己计算完之后,这一列会占用剩下的部分,而且是第四列的一半Column_3Auto这一列的设置可以使它自动适应自己的内容Column_42*当Auto属性的列自己计算完之后,这一列会占用剩下的部分,而且是第二列的二倍

Panel

Panel是XAML中的内置面板

我们可以直接绘制出一个长方形

在新建的空白页中(BlankPage1.xaml)更改为如下代码

<Page    x:Class="App2.BlankPage2"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:App2"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d">    <Rectangle Canvas.Left="200" Canvas.Top="100"    Fill="red" Width="350" Height="350" /></Page>


效果如图所示

我的缩放比例是25%。



StackPanel

这个属性可以让它的子元素按照一条线排列,当然,可以使垂直也可以使水平。

我们可以通过更改Orientation属性来设置水平或垂直,默认的是垂直的。也就是Orientation.Vertical

同样,来一个完整的例子。

xaml代码如下(同样,是完整的代码,不是部分的代码)


<Page    x:Class="App2.BlankPage2"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:App2"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d">    <StackPanel Margin="20">        <Rectangle Fill="Red" Width="100" Height="100" Margin="10" />        <Rectangle Fill="Blue" Width="100" Height="100" Margin="10" />        <Rectangle Fill="Green" Width="100" Height="100" Margin="10" />        <Rectangle Fill="Purple" Width="100" Height="100" Margin="10" />    </StackPanel></Page>


效果图:





Grid

最后一个布局咯。

顾名思义,网格布局就是允许有很多列和很多行。

我们可以通过RowDefinitionsColumnDefinitions来声明有多少列和行,子元素在使用的时候用Grid.ColumnGrid.Row就可以了,最好是用Auto和*,因为相对很多时候总要比绝对的好。

如果一个子元素想要跨很多行或者列,就使用Grid.RowSpan或者Grid.ColumnSpan就可以,同样,一个完整的例子。


<Page    x:Class="App2.BlankPage2"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:App2"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d">    <Grid Margin="12,0,12,0">        <Grid.RowDefinitions>            <RowDefinition Height="auto" />            <RowDefinition />            <RowDefinition Height="auto" />        </Grid.RowDefinitions>        <Grid.ColumnDefinitions>            <ColumnDefinition Width="*" />            <ColumnDefinition Width="*" />        </Grid.ColumnDefinitions>        <TextBox Text="第一行第一列" FontSize="60" Grid.Column="0" Grid.Row="0" />        <TextBox Text="第三行第一列" FontSize="60" Grid.Column="0" Grid.Row="2" />        <Button Content="第一行第二列" FontSize="60" Grid.Column="1" Grid.Row="0" />        <Button Content="第三行第二列" FontSize="60" Grid.Column="1" Grid.Row="2" />    </Grid></Page>


效果图


特别提醒:第一行其实写代码的时候是 0 哦!!列也一样。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 冰柜声音大怎么办嗡嗡响 交了钱电没有怎么办 小白熊电动吸奶器显示F1怎么办 花洒的水变小了怎么办 手机插卡处坏了怎么办 吉利帝豪一键启动钥匙没电怎么办 居民医保断交5年怎么办 社保和医保断了怎么办 停缴了两年社保怎么办 医保交不够20年怎么办 医保断交4个月怎么办 医保断交5个月怎么办 换城市后社保卡怎么办 苹果6s呼叫失败怎么办 苹果手机打电话显示呼叫失败怎么办 苹果手机经常呼叫失败怎么办 苹果手机呼叫号码呼叫失败怎么办 好友把我拉黑了怎么办 有人一直打骚扰电话怎么办 每天都有骚扰电话怎么办 苹果7被电话轰炸怎么办 苹果手机接听声音小怎么办 微信账号封了怎么办 在京东买的手机出现问题怎么办 销售没胆量扫楼怎么办 骨龄比实际年龄小怎么办 身体年龄比实际年龄大怎么办 吃了不熟的鸡蛋怎么办 六角龙尾巴烂了怎么办 兰花长出来的包怎么办 长寿花花开败了怎么办 手机分期0首付怎么办办 办分期手机掉了怎么办 手机办分期被骗了怎么办 办手机分期年龄不够怎么办 信美分期没额度怎么办 家里人不给我钱怎么办 商场租金收不上来怎么办 魅蓝2电池坏了怎么办 格力空调不制冷怎么办 空调外机不好放怎么办