原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

[源码下载]

重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

作者:webabcd

介绍
重新想象 Windows 8 Store Apps 之布局控件

  • Canvas - 绝对定位式布局
  • Grid - 网格式布局
  • StackPanel - 流式布局
  • VirtualizingStackPanel - 仅能用于 ItemsControl
  • WrapGrid - 仅能用于 ItemsControl
  • VariableSizedWrapGrid - 用于 Wrap 子元素集合

示例
1、Canvas 的 Demo
CanvasDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.CanvasDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<!--
Canvas - 绝对定位式布局
Canvas.Left - 与上一层 Canvas 的 Y轴 间的距离,左上角为原点
Canvas.Top - 与上一层 Canvas 的 X轴 间的距离,左上角为原点
Canvas.ZIndex - 用于设置任意控件的 z-index 值 注:Canvas 基于坐标定位,其不会因为自身的大小而限制子元素的大小
-->
<Canvas HorizontalAlignment="Left" VerticalAlignment="Top" Background="Red" Width="100" Height="100" Margin="120 0 0 0"> <Canvas Background="Green" Width="200" Height="200" Canvas.Left="120" Canvas.Top="120" >
<TextBlock Text="TextBlock" Canvas.Top="20" />
</Canvas> </Canvas>
</Grid>
</Page>

2、Grid 的 Demo
GridDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.GridDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<!--
Grid - 网格式布局
Grid.RowDefinitions - 用于定义 Grid 中的行
Grid.ColumnDefinitions - 用于定义 Grid 中的列
Width - 宽度
MinWidth - 最小宽度
MaxWidth - 最大宽度
Height - 高度
MinHeight - 最小高度
MaxHeight - 最大高度
Grid.Row - 控件所在的 Grid 的行的索引
Grid.Column - 控件所在的 Grid 的列的索引
Grid.RowSpan - 合并行。 控件所在行,以及控件所在行之后的需要连续合并的行的总行数
Grid.ColumnSpan - 合并列。 控件所在列,以及控件所在列之后的需要连续合并的列的总列数
Canvas.ZIndex - 用于设置任意控件的 z-index 值 Width 和 Height 的可用值如下:
1、Auto - 自动设置为一个合适的值。默认值
2、Pixel - 像素值
3、* - 比例值。如 * 就是全部,2* 和 8* 就是分别占 20% 和 80%
-->
<Grid Background="Blue" Width="300" Height="300" Canvas.ZIndex="100">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="3*" />
<RowDefinition Height="7*" />
<RowDefinition Height="*" MinHeight="50" MaxHeight="100" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions> <TextBox Grid.Row="0" Grid.Column="0" Background="red" Text="webabcd" />
<TextBox Grid.Row="0" Grid.Column="1" Background="red" Text="webabcd" Grid.ColumnSpan="2" HorizontalAlignment="Center" />
<TextBox Grid.Row="1" Grid.Column="0" Background="red" Text="webabcd" />
<TextBox Grid.Row="1" Grid.Column="1" Background="red" Text="webabcd" Grid.ColumnSpan="2" HorizontalAlignment="Center" />
<TextBox Grid.Row="2" Grid.Column="0" Background="red" Text="webabcd" />
<TextBox Grid.Row="2" Grid.Column="1" Background="red" Text="webabcd" Grid.RowSpan="2" VerticalAlignment="Bottom" />
<TextBox Grid.Row="2" Grid.Column="2" Background="red" Text="webabcd" />
<TextBox Grid.Row="3" Grid.Column="2" Background="red" Text="webabcd" />
<TextBox Grid.Row="4" Grid.Column="2" Background="red" Text="webabcd" />
</Grid> <!--
Canvas.ZIndex - 用于设置任意控件的 z-index 值 说明:
1、Grid 的 HorizontalAlignment 属性和 VerticalAlignment 属性的默认值均是 Stretch
2、在 Grid 内的所有子元素均需要通过 Margin 属性进行相对定位
-->
<Rectangle Margin="10 50 100 150" Fill="Green" Canvas.ZIndex="10" /> </Grid>
</Page>

3、StackPanel 的 Demo
StackPanelDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.StackPanelDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel HorizontalAlignment="Left" Margin="120 0 0 0"> <!--
StackPanel - 流式布局
Orientation - StackPanel 控件内对象的排列方向
Horizontal - 水平排列
Vertical - 垂直排列
-->
<StackPanel Orientation="Horizontal">
<TextBlock Text="a" Margin="5" />
<TextBlock Text="b" Margin="5" />
<TextBlock Text="c" Margin="5" />
</StackPanel> <StackPanel Orientation="Vertical">
<TextBlock Text="a" Margin="5" />
<TextBlock Text="b" Margin="5" />
<TextBlock Text="c" Margin="5" />
</StackPanel> </StackPanel>
</Grid>
</Page>

4、VirtualizingStackPanel 的 Demo
VirtualizingStackPanelDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.VirtualizingStackPanelDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" FontSize="14.667">
<Run>仅能用于 ItemsControl</Run>
<LineBreak />
<Run>请参见 Controls/ListBoxDemo.xaml</Run>
</TextBlock> </StackPanel>
</Grid>
</Page>

5、WrapGrid 的 Demo
WrapGridDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.WrapGridDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" FontSize="14.667">
<Run>仅能用于 ItemsControl</Run>
<LineBreak />
<Run>请参见 Controls/GridView/Demo.xaml</Run>
</TextBlock> </StackPanel>
</Grid>
</Page>

6、VariableSizedWrapGrid 的 Demo
VariableSizedWrapGridDemo.xaml

<Page
x:Class="XamlDemo.Controls.Layout.VariableSizedWrapGridDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" FontSize="14.667">
<Run>另请参见 Controls/GridView/VariableSized.xaml</Run>
</TextBlock> <!--
VariableSizedWrapGrid
1、用于 Wrap 子元素集合
2、关于 VariableSized 的功能详见 Controls/GridView/VariableSized.xaml
-->
<VariableSizedWrapGrid Orientation="Horizontal" HorizontalAlignment="Left" Background="Green" Width="1000" Margin="0 10 0 0">
<VariableSizedWrapGrid.Children>
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
<Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" />
</VariableSizedWrapGrid.Children>
</VariableSizedWrapGrid> </StackPanel>
</Grid>
</Page>

OK
[源码下载]

重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid的更多相关文章

  1. 重新想象 Windows 8 Store Apps 系列文章索引

    [源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...

  2. 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree

    原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...

  3. 重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager

    原文:重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState ...

  4. 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试

    原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...

  5. 重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding

    原文:重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding [源码下 ...

  6. 重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom

    原文:重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom [源码下载] 重新想象 Windows 8 Store Apps (13) - 控件之 Sem ...

  7. 重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示

    原文:重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示 [源码下载] 重新想象 Windows 8 Store Ap ...

  8. 重新想象 Windows 8 Store Apps (11) - 控件之 ListView 和 GridView

    原文:重新想象 Windows 8 Store Apps (11) - 控件之 ListView 和 GridView [源码下载] 重新想象 Windows 8 Store Apps (11) - ...

  9. 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom

    原文:重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom [源码下载] ...

随机推荐

  1. Qt 向word中插入文字(使用QAxWidget和QAxObject)

    pro 文件中要加入 CONFIG += qaxcontainer 2. main.cpp #include <QApplication> #include <QAxWidget&g ...

  2. ThinkPHP框架配置自定义的模板变量(十)

    原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...

  3. robots.txt禁止搜索引擎收录

    禁止搜索引擎收录的方法         一.什么是robots.txt文件? 搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息. 您可以在您的网站中创建一个纯文 ...

  4. unable to load default svn client 和 Eclipse SVN 插件与TortoiseSVN对应关系

    (一)unable to load default svn client 在Win7下的Eclipse,安装了subclipse 1.10.x,已经选中了subclipse和subversion Cl ...

  5. Cocos2d-x 3.1.1 学习日志8--2分钟让你知道cocos2d-x3.1.1 文本类别

    实际上文本经常使用的三个,LabelTTF,LabelBMF和LabelAtlas.而他们使用非常相似.所以,你会只举一反三,非常快就能够掌握了. <span style="font- ...

  6. 数据挖掘 决策树算法 ID3 通俗演绎

    决策树是对数据进行分类,以此达到预測的目的.该决策树方法先依据训练集数据形成决策树,假设该树不能对全部对象给出正确的分类,那么选择一些例外添�到训练集数据中,反复该过程一直到形成正确的决策集.决策树代 ...

  7. C++教材

    C++语言: 1.<Essential C++>:Stanley B.Lipman著. 旁枝暂略,主攻核心,轻薄短小.附习题与解答,适合刚開始学习的人. 2.<The C++ Pro ...

  8. 使用模板类导致error LNK2019: 无法解析的外部符号

    原地址 1.定义模板类: template<class T> class Stack {....}; 2.定义模板成员函数: 每个函数头都要以相同的模板声明打头,并将类限定符改成:类名&l ...

  9. 使用xml和java代码混合控制UI界面

    main.xml.................... <?xml version="1.0" encoding="utf-8"?> <Li ...

  10. hdu1151+poj2594(最小路径覆盖)

    传送门:hdu1151 Air Raid 题意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所 ...