想要说些什么,却不知道从哪开始。”形而上谓之道,形而下谓之器”。与其坐而论道,不如脚踏实地,从最实用的地方开始。

我们先来看看wpf中的grid控件。grid控件是个网格的布局控件,类似于网页中的table。我们看看一个例子:

 1     <Grid x:Name="condtionGrid" Height="130">
 2             <Grid.ColumnDefinitions>
 3                 <ColumnDefinition></ColumnDefinition>
 4                 <ColumnDefinition></ColumnDefinition>
 5                 <ColumnDefinition></ColumnDefinition>
 6                 <ColumnDefinition></ColumnDefinition>
 7
 8             </Grid.ColumnDefinitions>
 9             <Grid.RowDefinitions>
10                 <RowDefinition></RowDefinition>
11                 <RowDefinition></RowDefinition>
12                 <RowDefinition></RowDefinition>
13
14             </Grid.RowDefinitions>
15
16             <Label Content="数据库表中文名称:"/>
17             <TextBox Grid.Column="1" TextWrapping="Wrap" Text="{Binding TableShowName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" x:Name="txtTableShowName"/>
18             <Label Content="搜索框默认显示:" Grid.Column="2"/>
19             <TextBox Grid.Column="3" TextWrapping="Wrap" Text="{Binding SearchDefaultShowName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" x:Name="txtSearchDefaultShowName"/>
20             <Label Content="首页标题:" Grid.Row="1"/>
21             <TextBox Grid.Row="1" Grid.Column="1" TextWrapping="Wrap" Text="{Binding PageIndexTitle,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" x:Name="txtPageIndexTitle"/>
22             <Label Content="自定义字段:" Grid.Row="1" Grid.Column="2"/>
23             <TextBox Grid.Row="1" Grid.Column="3" TextWrapping="Wrap" Text="{Binding SelfDefineField,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" x:Name="txtSelfDefineField"/>
24             <Label Content="自定义字段描述:" Grid.Row="2"/>
25             <TextBox Grid.Row="2" Grid.Column="1" TextWrapping="Wrap" Text="{Binding SelfDefineFieldDescribe,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" x:Name="txtSelfdescribe"/>
26
27         </Grid>

运行后:

  这是一个常规的grid的用法,它定义了一个3行4列的表格。也许你看到这里,觉得这个比较简单有什么好说的。如今的web设计,讲求响应式设计,grid也可以做到响应式。啥是响应式?我觉得我们的页面能够适应不同的分辨率的设备,而不会导致页面布局的乱套。我们看看grid如何做到这一点?

修改我们上面的代码:

 1  <Grid x:Name="condtionGrid" Height="130">
 2             <Grid.ColumnDefinitions>
 3                 <ColumnDefinition Width="auto"></ColumnDefinition>
 4                 <ColumnDefinition Width="1.5*"></ColumnDefinition>
 5                 <ColumnDefinition Width="2*"></ColumnDefinition>
 6                 <ColumnDefinition></ColumnDefinition>
 7
 8             </Grid.ColumnDefinitions>
 9             <Grid.RowDefinitions>
10                 <RowDefinition></RowDefinition>
11                 <RowDefinition></RowDefinition>
12                 <RowDefinition></RowDefinition>
13
14             </Grid.RowDefinitions>

运行后:

  

图1

图2

第一列,我们定义为auto,自动宽度,其实是按内容的最小宽度来计算的。

第二列,1.5*,第三列,2*,第四列,没有定义宽度,其实,默认值为1*。

这些带*的宽度定义,wpf在绘制界面的时候,会按比例计算当前列的宽度。假设当前屏幕宽度为w,第一列的宽度为x,剩余宽度:z=w-x,那么第二列的宽度计算为:z*1.5/(1.5+2+1),剩下列的宽度计算同理。图1和图2,是不同屏幕下的运行结果。

  有人看到这里会觉得,这个也是比较简单的。“道生一,一生二,二生三,三生万物。”,所谓复杂的东西都是从最简单的开始,本质的东西永远都是最简单的,但不明了。如果需求比较复杂的话,grid也就变复杂了,因为它可以嵌套使用。

好了,grid的控件的布局,我就点到为止。

转载于:https://www.cnblogs.com/wangqiang3311/p/6970651.html

wpf研究之道-grid控件相关推荐

  1. WPF 控件专题 Grid 控件详解

    1.Grid 介绍 定义由列和行组成的灵活的网格区域,Grid顾名思义就是"网格",它的子控件被放在一个一个实现定义好的小格子里面,整齐配列,该对象可包含多个 Children对象 ...

  2. WPF实现炫酷Loading控件

    原文: WPF实现炫酷Loading控件 Win8系统的Loading效果还是很不错的,网上也有人用CSS3等技术实现,研究了一下,并打算用WPF自定义一个Loading控件实现类似的效果,并可以让用 ...

  3. 扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip

    扩展ToolBarManager.ListView和Grid控件以实现气球式的ToolTip 原文:扩展ToolBarManager.ListView和Grid控件以实现气球式的ToolTip inf ...

  4. WPF 实现 DataGrid/ListView 分页控件

    原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来.如果数据量很大,200 ...

  5. WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)

    原文 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) Windows Community Toolkit 再次更新到 5.0. ...

  6. 【C#】wpf自定义calendar日期选择控件的样式

    原文:[C#]wpf自定义calendar日期选择控件的样式 首先上图看下样式 原理 总览 ItemsControl内容的生成 实现 界面的实现 后台ViewModel的实现 首先上图,看下样式 原理 ...

  7. WPF自定义LED风格数字显示控件

    WPF自定义LED风格数字显示控件 原文:WPF自定义LED风格数字显示控件 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP1119 ...

  8. 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)

    文章目录 1.简介 1.1 WPF简介 1.2 WPF 体系结构 1.3 WPF入门开发 2.WebBrowser 2.1 WebBrowser特点 2.2 WebBrowser常用的属性.方法和事件 ...

  9. 编程小问题系列(2)——为什么WPF里MediaElement等视频控件不起作用

    为什么WPF里MediaElement等视频控件不起作用? 非常可能的原因是因为没有安装Microsoft Windows Media Player 10或者10以上的播放器,MSDN文档里 就写有下 ...

最新文章

  1. 卫星图像分割--Effective Use of Dilated Convolutions for Segmenting Small Object Instances
  2. python词频云图_python安娜卡列妮娜词云图制作
  3. Zw*与Nt*的区别
  4. 10人以下小团队管理手册-学习笔记
  5. 唐刘之辩:行业知识图谱的schema构建的难点、重点与困惑
  6. CrossOver 12 发布,Windows 模拟器
  7. 唉,一大早起床遇到脑残的,实在无语!QQ:124316912
  8. 如何用AutoRunner进行脚本手工编写
  9. 碧桂园博智林机器人总部大楼_碧桂园11.4亿元竞得北滘坤洲地块,近博智林机器人谷...
  10. ATFX:中国8月CPI同比2.5%,货币政策仍有宽松空间
  11. centos7 firewalld ip转发设置
  12. 基于零日漏洞的自动驾驶预期功能安全风险评估方法
  13. 8Manage:采购谈判的6个成功策略
  14. 9343拆机 xps13_《拆机Pa》十二期 第二代XPS 13是进步还是退步
  15. Oracle -PL/SQL Developer错误解决方案(ORA-02291)
  16. 基于JAVA实现的超级马里奥(Super Mario)游戏
  17. Java使用aopse实现word转换pdf
  18. StringBuffer 拼接字符串时,删除最后一个逗号
  19. unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
  20. vsto clickonce 发布setup.exe失败

热门文章

  1. 如何将音乐导入iphone手机,怎么将歌曲导入到iphone
  2. Linux 用户文件夹授权
  3. win10 64位系统 打开光盘出现339错误 缺少mscomctl.ocx组件 解决方案
  4. 解决bug--解决VS2019“无法下载安装文件,请检查网络设置”问题
  5. 大数据趣味学习探讨(二):我是怎么坚持学习的
  6. excel 统计函数笔记
  7. webbench源码学习--命令行选项解析函数getopt和getopt_long函数
  8. 侵犯计算机软件著作权的行为,侵犯计算机软件著作权的行为有哪些?
  9. RoboCup智能机器人足球教程(三)
  10. 一键录屏神器——Captura