07.移动先行之谁主沉浮----控件之轮流轰炸——布局类控件

简介:

如果移动方向有任何问题请参考===> 异常处理汇总-移动系列(点)

移动先行之谁主沉浮? 带着你的Net飞奔吧! 链接======>(点)

 

一、布局类控件
Grid、StackPanel、Canvas、 VariableSizedWrapGrid
1.布局控件 - Grid
  网格控件,网格布局;
  相当于 HTML 中的 Table 标签;
  但是注意 Table 更重要的是展示数据,而 Grid 则是专门为布局所生;
 
   属性标记
    Grid.RowDefinitions:行定义,元素类型 RowDefinition,必要属性 Height
    Grid.ColumnDefinitions:列定义,元素类型 ColumnDefinition,必要属性 Width
    Width 和 Height属性单位为像素,有两个特殊值“*”、“auto”
   
   常用附加属性 :
    Grid.Row:定义当前元素所出现的行号
    Grid.Column :定义当前元素所出现的列号
    Grid.RowSpan :定义当前元素所跨的行数
    Grid.ColumnSpan:定义当前元素所跨的列数
    
  1. 案例:定义一个3行2列的表格,在其中放元素
  
   效果:
  
 
   2.综合案例:计算器页面模仿
  创建一个基本页(WP统一样式)
  
  生成的页面,代码放在下面grid里面
  
   布局分析:(对空格和=来说,实现的话就要合并单元格)
  
   定义部分(上面的样式先忽略,和css有点相似,不会用的话在每个控件后面打属性值就可以了,后面会讲)
  
   下面是ui部分:(注意:row从0开始,column也是从0开始
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!--输出框-->
      <TextBox x:Name= "RLog"  Grid.Row= "0"  Grid.RowSpan= "2"  VerticalAlignment= "Stretch"  Grid.ColumnSpan= "5"  Margin= "0,0,0,20" ></TextBox>
 
      <!--第1行按键-->
      <Button Grid.Row= "2"  Click= "Button_Click" >MC</Button>
      <Button Grid.Row= "2"  Grid.Column= "1"  Click= "Button_Click" >MR</Button>
      <Button Grid.Row= "2"  Grid.Column= "2"  Click= "Button_Click" >MS</Button>
      <Button Grid.Row= "2"  Grid.Column= "3"  Click= "Button_Click" >M+</Button>
      <Button Grid.Row= "2"  Grid.Column= "4"  Click= "Button_Click" >M-</Button>
 
      <!--第2行按键-->
      <Button Grid.Row= "3"  Click= "Button_Click" >←</Button>
      <Button Grid.Row= "3"  Grid.Column= "1"  Click= "Button_Click" >CE</Button>
      <Button Grid.Row= "3"  Grid.Column= "2"  Click= "Button_Click" >C</Button>
      <Button Grid.Row= "3"  Grid.Column= "3"  Click= "Button_Click" ></Button>
      <Button Grid.Row= "3"  Grid.Column= "4"  Click= "Button_Click" >√</Button>
 
      <!--第3行按键-->
      <Button Grid.Row= "4"  Click= "Button_Click" >7</Button>
      <Button Grid.Row= "4"  Grid.Column= "1"  Click= "Button_Click" >8</Button>
      <Button Grid.Row= "4"  Grid.Column= "2"  Click= "Button_Click" >9</Button>
      <Button Grid.Row= "4"  Grid.Column= "3"  Click= "Button_Click" >/</Button>
      <Button Grid.Row= "4"  Grid.Column= "4"  Click= "Button_Click" >%</Button>
 
      <!--第4行按键-->
      <Button Grid.Row= "5"  Click= "Button_Click" >4</Button>
      <Button Grid.Row= "5"  Grid.Column= "1"  Click= "Button_Click" >5</Button>
      <Button Grid.Row= "5"  Grid.Column= "2"  Click= "Button_Click" >6</Button>
      <Button Grid.Row= "5"  Grid.Column= "3"  Click= "Button_Click" >*</Button>
      <Button Grid.Row= "5"  Grid.Column= "4"  Click= "Button_Click" >1/x</Button>
 
      <!--第5行按键-->
      <Button Grid.Row= "6"  Click= "Button_Click" >1</Button>
      <Button Grid.Row= "6"  Grid.Column= "1"  Click= "Button_Click" >2</Button>
      <Button Grid.Row= "6"  Grid.Column= "2"  Click= "Button_Click" >3</Button>
      <Button Grid.Row= "6"  Grid.Column= "3"  Click= "Button_Click" >-</Button>
      <Button Grid.Row= "6"  Grid.Column= "4"  Grid.RowSpan= "2"  VerticalAlignment= "Stretch"  Click= "Button_Click" >=</Button>
 
      <!--第6行按键-->
      <Button Grid.Row= "7"  Grid.ColumnSpan= "2"  VerticalAlignment= "Stretch"  Click= "Button_Click" ></Button>
      <Button Grid.Row= "7"  Grid.Column= "2"  Click= "Button_Click" >.</Button>
      <Button Grid.Row= "7"  Grid.Column= "3"  Click= "Button_Click" >+</Button>

 

完整代码
   补充点:* 和 auto (举一个简单例子)
  
  
 
2.布局控件 - StackPanel
  类似于 HTML 中的 DIV 标签;
  用于将子元素沿 垂直/水平(Orientation)方向排布;
  如果子内容超出面板,则会超出面板边界,但视觉上会被截断。
 
   案例
  
  我们平时对齐方式是 HorizontalAlignment和VerticalAlignment,Orientation是StackPanel等的排布方式,不要搞混淆
   
 
3.布局控件 - Canvas(画布)
  Canvas 中的每一个元素就相当于在 HTML 中设置了 “position:absolute”;
  可以通过 Canvas.Left、Canvas.Top 设置定位位置;
可以使用 Canvas.ZIndex 附加属性明确指定分层
 
  案例:(图形化设置背景用 fill 来填充)
  
  效果:
  
 
View Code

4.布局控件 - VariableSizedWrapGrid

  元素以行或列排列,当达到 MaximumRowsOrColumns 值会时会自动换行至新行或新列。
  由 Orientation 属性指定是按行还是列排列元素。
  通过使用附加属性 VariableSizedWrapGrid.RowSpan 和 VariableSizedWrapGrid.ColumnSpan,内容可跨越多行和多列。
  根据 ItemHeight 和 ItemWidth 属性的指定设置元素大小。
  不需要定义行和列的 Grid
 
   案例:(磁贴和非正常布局使用,一般不怎么用)
  
  效果:
   
View Code

 注意:如果发现打完代码没反应==>按图示操作: 

 
 
目录
相关文章
|
7月前
|
机器学习/深度学习 数据采集 API
Python自动化解决滑块验证码的最佳实践
Python自动化解决滑块验证码的最佳实践
|
安全 区块链 Python
币安永续合约加杠杆交易系统开发功能搭建(Python源码)
币安永续合约加杠杆交易系统开发功能搭建(Python源码)
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
614 216
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
857 61
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1291 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
243 138