RowDefinition的Height="*"和 ColumnDefinition的Width="*" 在C#中的写法

本文介绍了如何在C#中使用代码设置Grid的ColumnDefinition和RowDefinition。通过实例展示了如何将Width设为`*`和`Auto`。强调了`GridLength.Auto`是一个结构,而`new GridLength(1, GridUnitType.Star)`是一个类。" 104089566,7206235,Python爬虫实战:错误解析与解决策略,"['Python', '爬虫技术', '网络请求', '数据解析']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ColumnDefinition.Width的数据类型是:GridLength,所以就可以写为:

 column1.Width = new GridLength(1, GridUnitType.Star); //column1为一个实例

 如果ColumnDefinition的Width="Auto"   则在C#代码里就可以写为

 column1.Width =GridLength.Auto;

 这里不要搞混了, GridLength.Auto是一个结构,而 new GridLength(1, GridUnitType.Star);是一个类

 

下面来一个完整的布局代码,全部使用C#代码完成(练习的) 

  public  partial  class MainWindow : Window
    {
         public MainWindow()
        {
            InitializeComponent();

             // 显示网格
            grid1.ShowGridLines =  true;

             //
### 配置WPF Grid布局及Border属性 在WPF中,`Grid` 是一种强大的布局控件,可以用于创建复杂的用户界面。通过 `RowDefinitions` `ColumnDefinitions` 属性来定义行列的数量及其尺寸比例。对于每个子元素的位置,则可以通过附加属性 `Grid.Row` `Grid.Column` 来指定其所在的行列位置。 #### 定义行列 下面展示了一个基本的 `Grid` 布局配置示例,其中包括三行两列的设计: ```xml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Grid Example" Height="350" Width="525"> <Grid> <!-- 定义三行 --> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> <RowDefinition Height="2*" /> </Grid.RowDefinitions> <!-- 定义两列 --> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <!-- 添加第一个Button到第0行第0列 --> <Button Content="Button 1" Grid.Row="0" Grid.Column="0" /> <!-- 添加第二个Button到第0行第1列 --> <Button Content="Button 2" Grid.Row="0" Grid.Column="1" /> <!-- 使用Span跨越多行或多列 --> <TextBlock Text="Spanning Cell" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" /> </Grid> </Window> ``` 在这个例子中,`Height="*"` 表示该行的高度占可用空间的比例为一份;如果写成 `"2*"` 则表示它的高度将是其他单份行高的两倍[^1]。 #### 显示网格线 为了更直观地查看 `Grid` 的结构,在开发过程中可能希望显示网格线。以下是几种常见的方法之一:利用 `Border` 控件围绕每一单元格绘制边框线条。 ```xml <Grid ShowGridLines="True"> <!-- 可选启用内置虚线 --> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <!-- 左上角单元格 --> <Border BorderThickness="1" BorderBrush="Black" Background="#FFECECEC"> <TextBlock Text="Cell A"/> </Border> <!-- 右下角单元格 --> <Border Grid.Row="1" Grid.Column="1" BorderThickness="1" BorderBrush="Black" Background="#FFD9D9D9"> <TextBlock Text="Cell B"/> </Border> </Grid> ``` 这里设置了两个 `Border` 对象分别位于不同的单元格内,并赋予它们各自的背景颜色以便区分[^2]。 #### 结合实际应用案例调整布局 当设计较为复杂的窗口时,合理运用各种容器组合起来往往能得到更好的效果。例如将左侧列表视图放置在一个固定宽度的 `Grid` 中,右侧则留给动态变化的内容区[^3]。 ```xml <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="200"/> <!-- 固定宽 --> <ColumnDefinition/> <!-- 自适应剩余空间 --> </Grid.ColumnDefinitions> <!-- 左侧导航栏 --> <ListBox Name="NavigationList" SelectionChanged="OnSelectionChanged"/> <!-- 动态加载内容区域 --> <ContentControl Grid.Column="1" Name="DynamicContentArea"/> </Grid> ``` 以上代码片段展示了如何把一个固定的菜单条放在左边,而右边作为主要的工作区,可以根据用户的交互更新具体内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值