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

[源码下载]

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

作者:webabcd

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

  • Panel
  • Canvas
  • RelativePanel
  • StackPanel
  • Grid

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

<Pagex: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

<Pagex: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

<Pagex: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

<Pagex: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

<Pagex: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 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing

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

  2. 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar

    原文:背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar [源码下载] 背水一战 Windows 10 (40) - 控件(导航类): AppBar, ...

  3. 背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑

    背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 原文:背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 [源码 ...

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

    原文:背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ...

  5. 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox

    背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 原文:背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox [源码 ...

  6. 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)...

    原文:背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影) [源码下载] 背水一战 Wind ...

  7. 背水一战 Windows 10 (41) - 控件(导航类): Frame

    原文:背水一战 Windows 10 (41) - 控件(导航类): Frame [源码下载] 背水一战 Windows 10 (41) - 控件(导航类): Frame 作者:webabcd 介绍 ...

  8. 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画

    原文:背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 [源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webab ...

  9. 背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation

    原文:背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation [源码下载] 背水一战 Windows 10 (55 ...

最新文章

  1. iOS计算输入字符数
  2. Bzoj4818--Sdoi2017序列计数
  3. Mysql数据库(七)——mysql高阶语句(上)
  4. SQL优化技巧--远程连接对象引起的CTE性能问题
  5. 上架相关——App Store 上架流程
  6. 企业流程管理平台V2.0介绍
  7. Spring Boot之基于Dubbo和Seata的分布式事务解决方案
  8. 第一百二十三期:免费在线制图神器!不上水印支持中文版,GitHub标星已破1万2
  9. php atlas,apache atlas是什么
  10. Java Swing 如何关闭当前窗口?
  11. js做四则运算时,精度丢失问题及解决方法
  12. Facebook内布拉斯加州数据中心将扩建100万平方英尺
  13. 三大协议NetBEUI和 IPX/SPX TCP/IP
  14. sql vb xml 换行_vb中换行代码 vb代码输出怎么换行
  15. 为什么PBFT协议中需要Commit阶段
  16. post 请求报400错误
  17. 基于WordPress建个人博客
  18. [转载]【苹果千层派】轻松玩转酥皮_万金油_新浪博客
  19. 读书笔记:《浪潮之巅:下》
  20. nodejs爬虫淘宝详情图

热门文章

  1. android 切换语言 广播,Android App 应用内多语言切换
  2. Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸
  3. offsetX offsetY等总结
  4. 使用selenium爬取腾讯动漫
  5. win10引导安卓x86_微软确认Win10手机支持X86架构 iOS/Android震撼了!
  6. VMware中的虚拟机克隆
  7. 粗读:《谁动了我的奶酪》,反思
  8. 微信小程序输入框小数点后保留两位
  9. [计算机毕设]基于java的项目管理平台系统设计与实现(项目报告+答辩PPT+源代码+数据库)
  10. 什么是Gerrit?