当前位置: 首页 > news >正文

第一章-布局

0、Window窗体只允许存在一个对象,此时可以用布局控件放入其余的控件

 

1、常见的布局控件

  继承自Panel类:Grid、StackPanel、WrapPanel、DockPanel、UninformGrid、Canvas

  不继承Panel类Border

 

2、Grid

  Grid可以创建网格,如果没指定行和列默认为1行1列,创建行和列的语法如下

 <!--该Grid为4行3列--><Grid><!--行定义--><Grid.RowDefinitions><RowDefinition></RowDefinition><RowDefinition></RowDefinition><RowDefinition></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><!--列定义--><Grid.ColumnDefinitions><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions></Grid>

 

  可以指定控件所在的行和列

     <!--控件未指名行和列时,默认位于第一行第一列--><Button Height="30" Width="50" Content="测试"></Button><!--控件可指定行和列时,索引从0开始--><Button Grid.Column="2" Grid.Row="0" Height="30" Width="50" Content="测试"></Button>

 

  可以指定Grid的高和宽

 <Grid.RowDefinitions><!--将Grid平均划分为5份,第三行占100,剩下 两行前将剩余高度分为4份,各占2份--><RowDefinition Height="2*"></RowDefinition><RowDefinition Height="2*"></RowDefinition><RowDefinition Height="100"></RowDefinition></Grid.RowDefinitions><!--列定义--><Grid.ColumnDefinitions><!--指定具体宽度--><ColumnDefinition Width="100"></ColumnDefinition><!--根据所在窗格的大小自适应大小,与控件宽度报持一致--><ColumnDefinition  Width="auto"></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions>

 

  合并单元格ColumnSpan

 <!--跨列合并--><Button Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Height="50" Width="100" Content="测试"></Button>

 

GridSplitter,其还有一个预览效果ShowsPreview,默认为False  

    <Grid><Grid.ColumnDefinitions><ColumnDefinition Width="1*"></ColumnDefinition><ColumnDefinition Width="Auto"></ColumnDefinition><ColumnDefinition Width="2*"></ColumnDefinition></Grid.ColumnDefinitions><TextBlock Text="hell0 hell0hell0hell0hell0hell0hell0hell0hell0hell0hell0hell0" TextWrapping="Wrap"Background="Red"FontSize="30"/><!--分割符--><GridSplitter Grid.Column="1" Width="10" HorizontalAlignment="Center"></GridSplitter><TextBlock Text="World WorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorldWorld" TextWrapping="Wrap"Background="Blue"Grid.Column="2"FontSize="30"/></Grid>

 

3、StackPanel  

  使用堆栈方式放置子元素

      <!--放置方向Orientation:纵向(默认)、横向--><!--Margin 外边距:一个值时:上下左右均为该值两个值时:第一个为左右边距,第二个为上下边距四个值时:从左开始,顺时针方向
--><StackPanel Orientation="Horizontal"><Button Height="50" Margin="10" Width="100"></Button><Button Height="100" Margin="10,20" Width="140"></Button><Button Height="20" Width="41" Margin="1,2,3,4"></Button><Button Height="20" Width="41"></Button></StackPanel>

 

4、Border

  Border不是布局控件,他是一个装饰器。它只能包含一段嵌套内容(通常是布局面板),并为其添加背景或在其周围添加边框。为了深入地理解Border控件

 

5、WrapPanel面板

  在可能的空间中,以一次一行或一列的方式布置控件。

  默认情况下,WrapPanel.Orientation属性设置为Horizontal;控件从左向右进行排列,再在下一行中排列。

                           WrapPanel.Orientation属性设置为Vertical,从而在多个列中放置元素   

 <WrapPanel><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button><Button Height="50" Width="150"></Button></WrapPanel>

image

 

6、DockPanel面板

    <!--LastChildFill属性设置为true,该该置告诉DockPanel面板使最后一个元素占满剩余空间--><DockPanel LastChildFill="False"><Button Height="100" DockPanel.Dock="Top"></Button><Button Height="120" DockPanel.Dock="Bottom"></Button><Button Height="120" DockPanel.Dock="Left"></Button><Button Height="120" DockPanel.Dock="Right"></Button><Button></Button></DockPanel>

        image

 

7、UniformGrid面板

   UniformGrid面板不需要预先定义的列和行。相反,通过简单地设置Rows和Columns属性来设置其尺寸。每个单元格始终具有相同的大小

  <UniformGrid><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button><Button Width="100" Height="30"></Button></UniformGrid>

      image

 

8、Canvas

    Canvas根据坐标进行绘制,Canvas面板中有多个互相重叠的元素,可通过设置Canvas.ZIndex附加属性来控制它

们的层叠方式。

    添加的所有元素通常都具有相同的ZIndex值0。如果元素具有相同的ZIndex值,就按它们在Canvas.Children集合中的顺序进行显示,这个顺序依赖于元素在XAML标记中定义的顺序。

    <Canvas Height="400" Width="700"><Button Height="40" Width="100" Canvas.Top="100"></Button><Button Height="40" Width="100" Canvas.Bottom="50"></Button><Button Height="40" Width="100" Canvas.Left="100"></Button><Button Height="40" Width="100" Canvas.Right="100"></Button><Button Height="40" Width="100" Canvas.Right="100" Panel.ZIndex="1">右外</Button></Canvas>
http://www.rkmt.cn/news/94045.html

相关文章:

  • FastGPT多模态知识库实战部署全攻略
  • 【Java毕设源码分享】基于springboot+vue的隔离人员的管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • yowsup项目代码质量保障:pre-commit自动化检查实战指南
  • Gumroad开源项目:打造创作者专属的数字产品销售平台
  • 哈曼卡顿HK CITATION 500 无线有源音箱拆解过程图解​
  • 2025年末沃尔玛购物卡回收指南:正规平台与折扣全解析 - 讯息观点
  • 如何在WPS中快速启用VBA宏功能:完整安装指南
  • Day28:I2C 配置与使用
  • RPCS3完全配置手册:从零开始搭建高性能PS3模拟环境
  • 【C++14算法】make_unique
  • 深入理解连接错误:从 “ld returned 1“到系统性解决方案
  • 深度残差网络在智能垃圾分类中的技术实践与性能分析
  • Vue2如何设计大文件上传的交互界面与用户体验?
  • TinyMCE4支持微信公众号内容转存CMS
  • JS如何结合AES加密实现大文件上传的安全存储?
  • 正点原子imx6ull Qt界面显示bmp280气压值
  • wangEditor处理OA系统word文档批量上传
  • Termux安全防护终极指南:构建零信任移动开发环境
  • 10分钟构建智能图像分类系统:零代码AI实战指南
  • DPARSF预处理
  • 25、RAC数据库备份与恢复:使用Recovery Manager(RMAN)
  • P1131题解
  • 栈:数据结构中的 “线性管家”—— 从理论基础到统计领域实践应用
  • BoringNotch安装配置教程:将MacBook凹口变为动态音乐控制中心
  • 26、第三方集群解决方案及相关技术解析
  • 为什么视频生成稀疏注意力做不好?中科院自动化所最新提出稀疏注意力纠偏新范式
  • 吐血整理,性能测试的左移右移+性能基线实践,详细分析...
  • 【Qt开源项目】— ModbusScope-day 2
  • P2746题解
  • 企业级AI路由网关:解锁多模型智能调度的未来