当前位置: 首页 > 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.jsqmd.com/news/83865/

相关文章:

  • EyeWitness:25+智能服务识别系统让网络安全评估更高效
  • ModelEngine API与SDK实战指南:从零构建智能对话应用
  • 【Java毕设源码分享】基于springboot+vue的高校网上订餐平台的设计与实现_(程序+文档+代码讲解+一条龙定制)
  • 深入解析:从裸金属到云端的速度与温度:KVM/QEMU、virtio 与 SR-IOV 的原理与实战调优
  • 树莓派Windows部署实战:从零开始的完整指南
  • MySQL常用SQL总结
  • 告别理财焦虑:北京兰亭妙微拆解俄语理财 APP 的 “治愈系金钱管理设计”
  • Qt程序退出:优雅终止vs强制杀死的区别
  • 国内外后台管理系统差异:从设计逻辑到用户体验的核心区别
  • Java大厂面试搞笑场景
  • Python--运算符
  • 跨境独立站销售助手产品背景
  • 2025广东直播数字人视频矩阵服务商TOP5 评测!佛山等地优质直播数字人视频矩阵公司行业数据市场口碑及选择指南 - 全局中转站
  • 静态综合实验报告
  • [NOIP2017 提高组] 奶酪解题
  • morse
  • Python MATLAB 绘制和弦图,一图看懂实体关系
  • 边缘计算和云计算有什么区别? - 详解
  • 想下载Instagram视频?收藏这一篇就够了!(含在线工具/插件/App推荐)
  • Android16 EDLA 认证测试CTS过程介绍
  • FastGPT多模态知识库实战部署全攻略
  • yowsup项目代码质量保障:pre-commit自动化检查实战指南
  • 【Java毕设源码分享】基于springboot+vue的隔离人员的管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 【无标题】激活函数应该具有哪些特征
  • 哈曼卡顿HK CITATION 500 无线有源音箱拆解过程图解​
  • Gumroad开源项目:打造创作者专属的数字产品销售平台
  • uni-app新手避坑指南:从零开始搭建跨平台应用
  • 终极歌单迁移指南:3步轻松将网易云/QQ音乐歌单转至苹果音乐
  • Neovim状态栏美化终极指南:15款lualine主题快速上手
  • CityPersons数据集终极下载指南:免费获取行人检测训练资源