[源码下载]

背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid

作者:webabcd

介绍
背水一战 Windows 10 之 控件(布局类)

  • Panel
  • Canvas
  • RelativePanel
  • StackPanel
  • Grid

示例
1、Panel(基类) 的示例
Controls/LayoutControl/PanelDemo.xaml

<Page
x:Class="Windows10.Controls.LayoutControl.PanelDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.LayoutControl"
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="10 0 10 10"> <!--
StackPanel - 流式布局控件,继承自 Panel,下面介绍 Panel 的相关知识点
Children - 子元素集合([ContentProperty(Name = "Children")])
Background - 背景色
ChildrenTransitions - 过渡效果集合
--> <StackPanel Margin="5" Background="Orange">
<StackPanel.Children>
<TextBlock Text="A Panel contains a collection of UIElement objects, which are in the Children property" Margin="5" />
<TextBlock Text="Panel elements do not receive focus by default" Margin="5" />
<TextBlock Text="To compel a panel element to receive focus, set the Focusable property to true" Margin="5" />
</StackPanel.Children>
<StackPanel.ChildrenTransitions>
<TransitionCollection>
<EntranceThemeTransition />
</TransitionCollection>
</StackPanel.ChildrenTransitions>
</StackPanel> </StackPanel>
</Grid>
</Page>

Controls/LayoutControl/PanelDemo.xaml.cs

/*
* Panel(基类) - 面板控件基类(继承自 FrameworkElement, 请参见 /Controls/BaseControl/FrameworkElementDemo.xaml)
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.LayoutControl
{
public sealed partial class PanelDemo : Page
{
public PanelDemo()
{
this.InitializeComponent();
}
}
}

2、Canvas 的示例
Controls/LayoutControl/CanvasDemo.xaml

<Page
x:Class="Windows10.Controls.LayoutControl.CanvasDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.LayoutControl"
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 的子元素使用绝对定位) Canvas.Left - 与上一层 Canvas 的 Y轴 间的距离,左上角为原点。仅在 Canvas 的子元素中设置有效
Canvas.Top - 与上一层 Canvas 的 X轴 间的距离,左上角为原点。仅在 Canvas 的子元素中设置有效
Canvas.ZIndex - 用于设置控件的 z-index 值(数值大的在前面)。 不要求必须在 Canvas 内 注:Canvas 不会因为自身的大小而限制子元素的大小
--> <!--
这里指定 Canvas.Left 和 Canvas.Top 是没用的,因为它的父亲不是 Canvas
-->
<Canvas Margin="10 0 0 0" HorizontalAlignment="Left" VerticalAlignment="Top" Background="Orange" Width="100" Height="100"
Canvas.Left="100" Canvas.Top="100"> <Canvas Background="Blue" Width="200" Height="200" Canvas.Left="100" Canvas.Top="100">
<!--
Canvas 不会因为自身的大小而限制子元素的大小
-->
<TextBlock Text="TextBlock TextBlock TextBlock TextBlock TextBlock" /> <!--
Canvas.ZIndex 大的在前面,所以此处黑色会压着白色
-->
<StackPanel Background="Black" Width="50" Height="50" Canvas.Left="50" Canvas.Top="50" Canvas.ZIndex="10" />
<StackPanel Background="White" Width="50" Height="50" Canvas.Left="75" Canvas.Top="75" Canvas.ZIndex="1" />
</Canvas> </Canvas>
</Grid>
</Page>

Controls/LayoutControl/CanvasDemo.xaml.cs

/*
* Canvas - 绝对定位布局控件(继承自 Panel, 请参见 /Controls/LayoutControl/PanelDemo.xaml)
* double GetLeft(UIElement element) - 获取指定 UIElement 的 Canvas.Left 值
* double GetTop(UIElement element) - 获取指定 UIElement 的 Canvas.Top 值
* int GetZIndex(UIElement element) - 获取指定 UIElement 的 Canvas.ZIndex 值
* SetLeft(UIElement element, double length) - 设置指定 UIElement 的 Canvas.Left 值
* SetTop(UIElement element, double length) - 设置指定 UIElement 的 Canvas.Top 值
* SetZIndex(UIElement element, int value) - 设置指定 UIElement 的 Canvas.ZIndex 值
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.LayoutControl
{
public sealed partial class CanvasDemo : Page
{
public CanvasDemo()
{
this.InitializeComponent();
}
}
}

3、RelativePanel 的示例
Controls/LayoutControl/RelativePanelDemo.xaml

<Page
x:Class="Windows10.Controls.LayoutControl.RelativePanelDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.LayoutControl"
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="10 0 10 10"> <!--
RelativePanel - 相对定位布局控件
BorderBrush - 边框画笔
BorderThickness - 边框宽度(左 上 右 下)
CornerRadius - 边框的角半径(左上 右上 右下 左下)
Padding - 内容与边框的间距(左 上 右 下) LeftOf, RightOf, Above, Below - 在指定元素的左边, 右边, 上边, 下边
AlignLeftWithPanel, AlignRightWithPanel, AlignTopWithPanel, AlignBottomWithPanel - 是否与 RelativePanel 容器的左边缘, 右边缘, 上边缘, 下边缘对齐
AlignLeftWith, AlignRightWith, AlignTopWith, AlignBottomWith - 与指定元素的左边缘, 右边缘, 上边缘, 下边缘对齐
AlignHorizontalCenterWith, AlignVerticalCenterWithPanel - 与指定元素水平居中对齐, 垂直居中对齐
AlignHorizontalCenterWithPanel, AlignVerticalCenterWithPanel - 是否相对于 RelativePanel 容器水平居中对齐, 垂直居中对齐 在 code-behind 中有对应的 Get... 和 Set... 方法来获取或设置上面这些附加属性
--> <RelativePanel Width="300" Margin="5"
HorizontalAlignment="Left" BorderBrush="Orange" BorderThickness="1" CornerRadius="0" Padding="0"> <Rectangle x:Name="rectangle1" Fill="Red" Height="50" Width="50"/> <Rectangle x:Name="rectangle2" Fill="Blue" Height="50" Width="50"
RelativePanel.RightOf="rectangle1" /> <Rectangle x:Name="rectangle3" Fill="Green" Height="50" Width="50"
RelativePanel.AlignRightWithPanel="True"/> <Rectangle x:Name="rectangle4" Fill="Yellow" Height="50" Width="50"
RelativePanel.Below="rectangle3" RelativePanel.AlignHorizontalCenterWith="rectangle3" /> <!--
rectangle5 的上边缘与 rectangle4 的上边缘对齐
-->
<Rectangle x:Name="rectangle5" Fill="Purple" Height="100" Width="100"
RelativePanel.AlignTopWith="rectangle4" RelativePanel.AlignHorizontalCenterWithPanel="True" /> </RelativePanel> </StackPanel>
</Grid>
</Page>

Controls/LayoutControl/RelativePanelDemo.xaml.cs

/*
* RelativePanel - 相对定位布局控件(继承自 Panel, 请参见 /Controls/LayoutControl/PanelDemo.xaml)
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.LayoutControl
{
public sealed partial class RelativePanelDemo : Page
{
public RelativePanelDemo()
{
this.InitializeComponent();
}
}
}

4、StackPanel 的示例
Controls/LayoutControl/StackPanelDemo.xaml

<Page
x:Class="Windows10.Controls.LayoutControl.StackPanelDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.LayoutControl"
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="10 0 10 10"> <!--
StackPanel - 流式布局控件
Orientation - 控件内元素的排列方向
Horizontal - 水平排列
Vertical - 垂直排列
BorderBrush - 边框画笔
BorderThickness - 边框宽度(左 上 右 下)
CornerRadius - 边框的角半径(左上 右上 右下 左下)
Padding - 内容与边框的间距(左 上 右 下)
--> <StackPanel Background="Orange" Margin="5"
Orientation="Vertical" BorderBrush="Red" BorderThickness="1 2 3 4" CornerRadius="10 20 30 40" Padding="10 20 30 40">
<TextBlock Text="abc" Margin="5" />
<TextBlock Text="xyz" Margin="5" />
<TextBlock Text="123" Margin="5" />
</StackPanel> </StackPanel>
</Grid>
</Page>

Controls/LayoutControl/StackPanelDemo.xaml.cs

/*
* StackPanel - 流式布局控件(继承自 Panel, 请参见 /Controls/LayoutControl/PanelDemo.xaml)
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.LayoutControl
{
public sealed partial class StackPanelDemo : Page
{
public StackPanelDemo()
{
this.InitializeComponent();
}
}
}

5、Grid 的示例
Controls/LayoutControl/GridDemo.xaml

<Page
x:Class="Windows10.Controls.LayoutControl.GridDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.LayoutControl"
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 中的列
BorderBrush - 边框画笔
BorderThickness - 边框宽度(左 上 右 下)
CornerRadius - 边框的角半径(左上 右上 右下 左下)
Padding - 内容与边框的间距(左 上 右 下) RowDefinition - 行定义
Height - 高度
MinHeight - 最小高度
MaxHeight - 最大高度
ActualHeight - 获取真实高度 ColumnDefinition - 列定义
Width - 宽度
MinWidth - 最小宽度
MaxWidth - 最大宽度
ActualWidth - 获取真实宽度 Grid.Row - 控件所在的 Grid 的行的索引
code-behind: int GetRow(FrameworkElement element), SetRow(FrameworkElement element, int value)
Grid.Column - 控件所在的 Grid 的列的索引
code-behind: int GetColumn(FrameworkElement element), SetColumn(FrameworkElement element, int value)
Grid.RowSpan - 合并的行数。 控件所在行,以及控件所在行之后的需要连续合并的行的总行数
code-behind: int GetRowSpan(FrameworkElement element), SetRowSpan(FrameworkElement element, int value)
Grid.ColumnSpan - 合并的列数。 控件所在列,以及控件所在列之后的需要连续合并的列的总列数
code-behind: int GetColumnSpan(FrameworkElement element), SetColumnSpan(FrameworkElement element, int value) Width 和 Height 的可用值如下:
1、Auto - 自动设置为一个合适的值。默认值
2、Pixel - 像素值
3、* - 比例值。如 * 就代表全部,2* 和 7* 就代表后者是前者的 7/2 倍 注:Grid 的 HorizontalAlignment 属性和 VerticalAlignment 属性的默认值均是 Stretch
--> <Grid Background="Blue" Width="300" Height="300" BorderBrush="Orange" BorderThickness="10" CornerRadius="10" Canvas.ZIndex="10">
<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 值(不要求必须在 Canvas 内) 注:在 Grid 内的子元素的定位可以通过 Margin 来实现
-->
<Rectangle Margin="10 50 100 150" Fill="Green" Canvas.ZIndex="1" /> </Grid>
</Page>

Controls/LayoutControl/GridDemo.xaml.cs

/*
* Grid - 网格布局控件(继承自 Panel, 请参见 /Controls/LayoutControl/PanelDemo.xaml)
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.LayoutControl
{
public sealed partial class GridDemo : Page
{
public GridDemo()
{
this.InitializeComponent();
}
}
}

OK
[源码下载]

背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid的更多相关文章

  1. 背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView

    [源码下载] 背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView 作者:webabcd ...

  2. 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性

    [源码下载] 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性 作者 ...

  3. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing

    [源码下载] 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing 作者:webabcd 介绍背水一 ...

  4. 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, VerticalAlignment

    [源码下载] 背水一战 Windows 10 (75) - 控件(控件基类): FrameworkElement - 基础知识, 相关事件, HorizontalAlignment, Vertical ...

  5. 背水一战 Windows 10 (54) - 控件(集合类): ItemsControl 的布局控件 - OrientedVirtualizingPanel, VirtualizingStackPanel, WrapGrid

    [源码下载] 背水一战 Windows 10 (54) - 控件(集合类): ItemsControl 的布局控件 - OrientedVirtualizingPanel, VirtualizingS ...

  6. 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog

    [源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...

  7. 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu

    [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu 作者:webabcd 介绍背水一战 Windows 10 之 控件(弹 ...

  8. 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout

    [源码下载] 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout 作者:webabcd 介绍背水一战 Windows 10 之 ...

  9. 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch

    [源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...

随机推荐

  1. win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9

    原文:win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9 问题:PHP新手配置,在官网上下载的压缩包.按网上的找的教程配置IIS时发现,在解压包里找不到php5is ...

  2. 搭建环境Visual Studio 2013 社区版

    搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio Community 2013 开发环境. Visual St ...

  3. three.js 源代码凝视(十六)Math/Frustum.js

    商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 -  本博客专注于 敏捷开发 ...

  4. microsoft NLayerApp项目中的层次结构图

    microsoft NLayerApp项目中的层次结构图 回到目录 如果你想学好一样东西,一定要看高手是如何做的 如果你想学好.net,一定要看.net framworks源代码 如果你想学好分层结构 ...

  5. [Phonegap+Sencha Touch] 移动开发24 包wp8.1的App,弹出软键盘输入框聚焦实施后,无移动采收率方法来解决接口

    这种现象不仅是现在显示phonegap包sencha touch的wp8.1该程序将出现(只wp8.1,wp8正常).其他js我测试了几个框架(app framework, jquery mobile ...

  6. [Java]利用拦截器和自定义注解做登录以及权限验证

    1.自定义注解 需要验证登录的注解 package com.etaofinance.wap.common; import java.lang.annotation.Documented; import ...

  7. MVC中如何实现本地化的解决方案

    1. Q: 什么是本地化? A: 本地化是指企业在国际化过程中,为了提高市场竞争力,同时降低成本,将产品的生产.销售等环节按特定国家/地区或语言市场的需要进行组织,使之符合特定区域市场的组织变革过程. ...

  8. C#Winform中的一个登录解说(转载的哟,比较不错)

    最近,看到网上经常会问如何进行窗口跳转,大多数的问题都是牵扯到Login窗口.其实,在Visual Studio 6以来,比较正确的做法,是判断Login窗口的返回值,然后决定是否打开主窗体,那么在C ...

  9. iOS基础 - 数据库CoreData

    一.iOS应用数据存取的常用方式 XML属性列表 —— PList NSKeyedArchiver 归档 Preference(偏好设置) SQLite3 Core Data 二.Core Data简 ...

  10. UVA 141 The Spot Game 斑点游戏。。

     The Spot Game  The game of Spot is played on an NxN board as shown below for N = 4. During the game ...