动态设置网格列/行宽/高

问题描述 投票:0回答:4

我需要从代码隐藏动态创建一个 WPF 网格。一切顺利,我可以这样做,以便设置内容宽度,但我需要做的是设置它们,以便当我调整窗口大小时,控件会动态调整大小

var col = new ColumnDefinition();
col.Width = new System.Windows.GridLength(200);
grid1.ColumnDefinitions.Add(col);

这将生成 XAML

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>

但是我需要的是使用 * 或问号,即。

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

但是从代码后面创建时 WidthValue 不支持 * 或问号 a ?

c# wpf grid code-behind
4个回答
31
投票

你可以这样指定:

对于自动调整大小的列:

GridLength.Auto

对于星型尺寸的列:

new GridLength(1,GridUnitType.Star)

8
投票

设置 Grid ColumnDefinitions 的宽度有 3 种类型:

对于百分比列:

 yourGrid.ColumnDefinitions[0].Width = new GridLength(1, GridUnitType.Star); 

在 xaml 中:

<ColumnDefinition Width="1*"/>

对于像素列

yourGrid.ColumnDefinitions[0].Width = new GridLength(10, GridUnitType.Pixel);
yourGrid.ColumnDefinitions[0].Width = new GridLength(10); 

在 xaml 中:

<ColumnDefinition Width="10"/>

对于自动列

yourGrid.ColumnDefinitions[0].Width = GridLength.Auto;

在 xaml 中:

<ColumnDefinition Width="Auto"/>

希望有帮助!


6
投票

我认为这会有所帮助:

对于自动列:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = GridLength.Auto;

或比例网格长度:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = new GridLength(1, GridUnitType.Star);

或者看看: http://msdn.microsoft.com/en-us/library/system.windows.gridlength.aspxhttp://msdn.microsoft.com/en-us/library/system.windows.gridunittype.aspx

格力兹 肖恩堡


0
投票

其他人已经提供了很多解释。

RowDefinations
ColumnDefinations
的 GridLength 语法相同。共享颜色代码语法,以便快速轻松地理解

© www.soinside.com 2019 - 2024. All rights reserved.