首页 > 其他分享 >【WPF学习】01

【WPF学习】01

时间:2023-04-21 09:47:06浏览次数:41  
标签:控件 01 -- 元素 学习 Grid DockPanel WPF 区块

布局基础

.1  根据格网划分行列--Grid,Grid.RowDefinition,Grid.ColumnDefinition

格网

<Grid></Grid>

多行

<Grid.RowDefinitions>

  <RowDefinition/>

  <RowDefinition/>

</Grid.RowDefinition>

多列

<Grid.ColumnDefinitions>

  <ColumnDefinition/>

  <ColumnDefinition/>

<Grid.ColumnDefinitions>

代码描述:

将面板划分为两行/两列

PS:可以通过Grid.Row和Grid.Column参数来基于行列索引设置对应区块参数,但需要注意行列索引都是从0开始的

.2  背景--Background

边界划分

<Border>

</Border>

背景颜色

<Border Background="Red"/>

代码描述:

目标区块的背景颜色设置为红

综合使用关键字设置第i行第j列区块的背景颜色

<Border Grid.Row="i" Grid.Column="j" Background="Green"/>

.3  边框--Margin

在Border参数内除了使用Background参数能设置该框架的背景颜色外,还可以使用Margin参数可以设置一个空白边框,数值代表边框尺寸

<Border Background="blue" Margin="5">

.4  尺寸--Height,Width

.4.1  自适应:

<Grid>

  <Grid.RowDefinitions>

    <RowDefinition  Height="auto"/>

    <RowDefinition  />

  <Grid.RowDefinitions>

</Grid>

代码描述:

将面板分为两行,第一行的高度自适应

PS:当区块内没有元素的时候,使用自适应可能会直接覆盖该区块

.4.2  绝对尺寸(固定值)

<Grid>

  <Grid.RowDefinitions>

    <RowDefinition>

      <Button  Width=“100”  Height="10"/>

    </RowDefinition>

    <RowDefinition/>

  <Grid.RowDefinitions>

</Grid>

代码描述:

行1里有新建一个button元素控件,尺寸为固定的100宽度和10高度

.4.3  相对尺寸(比例)

<Grid>

  <Grid.RowDefinitions>

    <RowDefinition  Height="2*"/>

    <RowDefinition/>

  </Grid.RowDefinitions>

</Grid>

代码描述:

行1的高度是行2的两倍(a倍就是a*)

.5  参数设置所影响的空间范围--Grid.RowSpan,Grid.ColumnSpan

占据行列数

<Border  Background="Red"  Grid.RowSpan="2"  Grid.ColumnSpan="2"/>

代码描述:“背景为红”这一设置影响前两行两列的四个区块

.6  局部容器--StackPanel,WrapPanel,DockPanel,UniformGrid

代码实例:

<Grid>

<Grid.RowDefinitions>

  <RowDefinition/>

  <RowDefinition/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

  <ColumnDefinition/>

  <ColumnDefinition/>

</Grid.ColumnDefinitions>

  <StackPanel>

    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>

  </StackPanel>

  <WrapPanel Grid.Row="1">

    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>
    <Button  Width="100"  Height="40"/>

  </WrapPanel>

</Grid>

代码描述:

在StackPanel对应的局部范围内(这里对应的是两行两列划分出的四区块中的第一区块),此范围内生成四个button元素控件

在第二行第一列(注意对应关系,这里初始划分了两行两列,行列索引从0开始)区块生成四个button元素控件

.6.1  排列方向

StackPane对应局部l范围内的元素默认情况下是自上而下紧密排列的

在StackPanel标签中我们可以通过Orientation参数选择其他类型的排列方向

<StackPanel Orientation="Horizontal">

</StackPanel>

水平方向(自左向右)  Horizontal

垂直方向(自上向下)  Vertical

而WrapPanel默认情况下对应局部范围内的元素是水平排列的,同样可以通过Orientation参数改变元素排列方向

但WrapPanel相对于StackPanel的最大区别是,前者会保证每一个元素控件在范围内的完整可视性(在水平方向排列时,同样遭遇剩余空间不足以显示完整元素控件的情况,WrapPanel会换行,而StackPanel则是硬排哪怕元素控件被部分遮挡)

.6.2  停靠方式

除了上述两种局部容器之外还有一个 DockPanel,使用过winform的应该知道Dock一般为元素在位置上设置停靠属性(靠左,靠右,靠上,靠下)这里也是一样的

默认情况下,DockPanel内的元素不设置具体尺寸值默认尺寸会填满对应区域

默认情况下,DockPanel内的元素停靠方式为靠左排列

通过DockPanel.Dock参数可以修改元素停靠方式

<DockPanel>

  <Button  Width=" 100"  Height="40"  DockPanel.Dock="Left"/>

  <Button  Width=" 100"  Height="40"  DockPanel.Dock="Right"/>

  <Button  Width=" 100"  Height="40"  DockPanel.Dock="Top"/>

  <Button  Width=" 100"  Height="40"  DockPanel.Dock="Right"/>

</DockPanel>

通过LastChildFill参数可以设置最后一个元素是否填充满DockPanel的剩余空间

<DockPanel LastChildFill=“False”>或者<DockPanel LastChildFill="True">

  元素

</DockPanel>

.6.3  均分空间排布

使用UniformGrid可以实现把有限的空间均分给空间内的元素

例如让一块3*3的格网被9个Button元素控件均分

<Grid>

  <UniformGrid Columns="3" Rows="3">
    <Button/>
    <Button/>
    <Button/>


    <Button/>
    <Button/>
    <Button/>


    <Button/>
    <Button/>
    <Button/>

    //注意,这里的每三个Button代表一行自左向右里的一组

  </UniformGrid>

</Grid>

标签:控件,01,--,元素,学习,Grid,DockPanel,WPF,区块
From: https://www.cnblogs.com/90Red/p/17328234.html

相关文章

  • ABB工业控制器 UNITROL 1020 3BHE030579R0003 UNS0119A-Z,V1 3BHE030579R0001
    W;1  ⑧0③0①⑦77⑤  9ABBUNITROL10203BHE030579R0003 UNS0119A-Z,V13BHE030579R0001 DDC779BE023BHE006805R0002 XO08R21SBP260109R1001 PM866K013BSE050198R1 CI858K013BSE018135R1 PU515A3BSE032401R1 励磁控制系统的主要任务是向发电机......
  • C#多线程学习(三) 生产者和消费者
    C#多线程学习(三)生产者和消费者线程学习第一篇:C#多线程学习(一)多线程的相关概念线程学习第二篇:C#多线程学习(二)如何操纵一个线程前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数......
  • Prufer 序列学习笔记
    一、前言感觉它本身没有什么用。主要是用于计数问题。前置知识:树的定义。二、定义对于一棵有\(n\)个节点的无根树\(T\),定义其Prufer序列为执行以下操作\(n-2\)次所形成的长度为\(n-2\)的正整数序列。·选择其编号最小的度数为\(1\)的节点,输出唯一与其相邻的节点的......
  • 学习请一定要快乐
    学习请一定要快乐学习请一定要快乐,当我们感到快乐时,我们的大脑会释放多巴胺等神经递质,这些神经递质有助于提高注意力、记忆力和学习效率。因此,当我们感到快乐时,我们更容易专注于学习并且更容易记住所学的知识。快乐可以降低压力和焦虑水平,这有助于促进学习。当我们感到紧张或焦......
  • Exp5 信息搜集与漏洞扫描-20201324
    目录1各种搜索技巧的应用1.1搜索网址目录结构dir_listingbrute_dirs1.2利用搜索引擎的技巧普通检索采用字段设置1.3路由侦查2DNSIP注册信息的查询2.1whois查询2.2nslookup查询2.3dig域名查询2.4IP2Location地理位置查询2.5IP2反域名查询3基本的扫描技术:主机发现、端口......
  • JavaScript学习
    JS中的注释学习一个语言,先学习一个语言的注释,因为注释是给我们自己看的,也是给开发人员看的写好一个注释,有利于我们以后阅读代码5-1单行注释一般就是用来描述下面一行代码的作用可以直接写两个/,也可以按ctrl+///我是一个单行注释//下面代码表示在浏览器里面出现一个弹出......
  • JavaScript学习笔记
    SassSASS官网世界上最成熟、最稳定、最强大的专业级CSS扩展语言!sass是一个css的预编译工具也就是能够更优雅的书写csssass写出来的东西浏览器不认识依旧是要转换成css在浏览器中运行变量定义一个变量,在后面的代码中使用使用$来定义变量//定义一个$c作为变量,值是红......
  • Wc2015……酱油记?
    怎么看大家都在写酱油记我也来水一发算了==宿舍网络不大好==加上患上了不治之症扁桃腺发炎啥的==这篇算是之后没事闲的补一发了吧……===============================DAY0====================================凌晨一点的火车QAQ大东北离杭州真是远QAQ等车时群里(不要问我......
  • 深度学习--数学运算符
    深度学习--数学运算符基础运算符加减乘除importtorcha=torch.randint(1,10,[2,2])b=torch.randint(1,10,[2,2])print(a)#tensor([[9,7],[5,8]])print(b)#tensor([[2,4],[1,7]])#加法+torch.add(a,b)a+b#tensor([[11,11],[6,15]])torch.add(a,b)#tensor(......
  • 【前端可视化】SVG 学习知识点
    基本概念和语法SVG的定义和历史SVG是可缩放矢量图形(ScalableVectorGraphics)的缩写,它是一种用于描述二维矢量图形的XML标记语言。与传统的栅格图像不同,SVG图像可以无限缩放而不会失真,同时也支持交互和动画等特性。SVG最早于1999年由W3C发布,用于在Web上展示矢量图......