wpf Grid布局详解 `Auto` 和 `*` 是两种常见的设置方式 行或列占多个单元格,有点像excel里的合并单元格。使其余的列平均分配剩余的空间

news/2024/7/21 5:14:05 标签: wpf, excel

比如只有行的界面

在这里插入图片描述

<Window x:Class="GenerateTokenApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GenerateTokenApp"
        mc:Ignorable="d"
        Title="Generate Token App" Height="450" Width="800" Closed="Window_Closed">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Button Grid.Row="0" x:Name="SelectFileButton" Content="Select File" Margin="10,10,10,0" Height="100" Click="SelectFileButton_Click" FontSize="36"/>
        <Button x:Name="GenerateTokenButton" Content="Generate Token" HorizontalAlignment="Left" Margin="10,50,0,0" VerticalAlignment="Top" Width="200" Click="GenerateTokenButton_Click" Visibility="Collapsed"/>
        <TextBox Grid.Row="1" x:Name="LogTextBox" Margin="10" TextWrapping="Wrap" />
    </Grid>
</Window>

行或列占的比例

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="120*"/>
            <ColumnDefinition Width="167*"/>
            <ColumnDefinition Width="448*"/>
            <ColumnDefinition Width="65*"/>
        </Grid.ColumnDefinitions>

Width 属性的值在 WPF 中决定了一个元素在水平方向上的大小。Auto* 是两种常见的设置方式,它们有不同的含义:

  1. Width="Auto":

    • 当一个元素的宽度设置为 “Auto” 时,它的宽度会自动调整以适应其内容的大小。
    • 元素会根据内部的内容或子元素来决定其宽度,以确保内容完全可见。
    • 这通常用于文本框、按钮等元素,以使它们的宽度适应其文本内容。
  2. Width="*":

    • 当一个元素的宽度设置为 “*” 时,它会占据剩余的可用空间。
    • 如果容器中有多个元素,其中一个设置了宽度为 “*”,其余的元素可以是 “Auto” 或具有固定宽度,它们将平均分配可用的空间。
    • 这通常用于在容器中进行比例布局,以使元素根据其 “Weight” 来分配可用的水平空间。

示例:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />  <!-- 宽度适应内容 -->
        <ColumnDefinition Width="*" />      <!-- 占据剩余空间 -->
        <ColumnDefinition Width="2*" />     <!-- 占据剩余空间的两倍 -->
    </Grid.ColumnDefinitions>
    
    <Button Grid.Column="0" Content="按钮1" />     <!-- 宽度适应内容 -->
    <Button Grid.Column="1" Content="按钮2" />     <!-- 占据剩余空间 -->
    <Button Grid.Column="2" Content="按钮3" />     <!-- 占据剩余空间的两倍 -->
</Grid>

在上述示例中,第一个按钮的宽度适应其内容,第二个按钮占据剩余的空间,而第三个按钮占据了剩余空间的两倍。这是使用 Auto* 来定义列的一个简单示例。

excel_66">行或列占多个单元格,有点像excel里的合并单元格。

比如 从第0列起占4列

Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4"

如果你想要创建一个宽度为 120 个逻辑单位的列,并使其余的列平均分配剩余的空间,你可以这样做:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="120"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    
    <!-- 第一列宽度为 120 -->
    <Button Grid.Column="0" Content="按钮1" />
    
    <!-- 第二列和第三列平均分割剩余空间 -->
    <Button Grid.Column="1" Content="按钮2" />
    <Button Grid.Column="2" Content="按钮3" />
</Grid>

上述示例中,第一列的宽度是固定的 120 个逻辑单位,而第二列和第三列平均分配了剩余的可用空间。



http://www.niftyadmin.cn/n/5160803.html

相关文章

Feign使用MultipartFile

Feign的方法参数使用MultipartFile Feign的方法参数使用MultipartFile&#xff0c;不能直接用&#xff0c;需要做一些配置。 依赖包&#xff1a; <dependency><groupId>io.github.openfeign.form</groupId><artifactId>feign-form</artifactId&g…

SICP01(待续)

一、Lisp概览 语言&#xff1a;规则本身计算机科学的任务&#xff1a;形式化有关”怎么做“的指令性知识&#xff0c;并付诸实践问题产生&#xff1a;构建大型系统的时候难以管理解决方法&#xff1a;在大系统中控制复杂度的方法也是计算机所关注的注意&#xff1a;计算机中的…

SEO是什么?独立站如何进行SEO优化

创建一个独立网站并不是难事&#xff0c;但要做好独立网站并进行SEO优化以增加自然流量可能是一个不小的挑战。今天&#xff0c;我们将分享一些关于独立网站SEO优化的技巧&#xff0c;并详细探讨如何提升流量。 在本文中&#xff0c;我们将主要关注谷歌SEO&#xff0c;但请不要…

pandas教程:Binary Data Formats 二进制数据格式

文章目录 6.2 Binary Data Formats (二进制数据格式)1 Using HDF5 Format2 Reading Microsoft Excel Files&#xff08;读取微软的excel文件&#xff09; 6.2 Binary Data Formats (二进制数据格式) 最简单的以二进制的格式来存储数据的方法&#xff08;也被叫做serialization…

汽车发动机各系统部件构造图解及名称大全(超详细)

我们都知道发动机是汽车的心脏,相信大家都有东拼西凑的学一些发动机知识,今天汽车维修网小编给大家系统的整理整个发动机的基础知识,如果能认真看完,相信肯定有所收获。全文3065字,81幅结构图,建议收藏、分享后再慢慢看。 首先我们来看一下 发动机总成构造图解 发动机…

Comparator接口与Lambda表达式

引言 在你学习过Lambda表达式和java的函数引用之后&#xff0c;你就可以进一步了解Comparator这个接口了&#xff0c;它提供了很多有用的方法&#xff0c;以及很多函数式接口的参数供你使用&#xff0c;本质的目的是为了让你可以尽可能简单的编写一个排序方法。 注&#xff1…

Redis7--基础篇2(Redis的十大数据类型及常用命令)

1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库&#xff0c;我们所说的数据类型指的是value的数据类型&#xff0c;key的数据类型都是字符串。 1.1 字符串&#xff08;String&#xff09; string是redis最基本的类型&#xff0c;一个key对应一个val…

TensorFlow学习笔记--(1)张量的随机生成

张量的生成 如何判断一个张量的维数&#xff1a;看张量的中括号有几层 0 1 2 &#xff1a;零维数列 [2 4 6] : 一维向量 [ [1 2 3] [4 5 6] ] : 二维数组 两行三列 第一行数据为 1 2 3 第二行数据为 4 5 6 以此类推 n维张量有n层中括号 tf.zeros(%指定一个张量的维数%) 生成一…