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

Wel*_*ing 18 c# wpf grid code-behind

我需要从后面的代码动态创建一个WPF网格.这样做是可以的,我可以这样做,以便我设置内容宽度,但我需要做的是设置它们,以便当我调整窗口大小时,控件重新调整大小

var col = new ColumnDefinition();
col.Width = new System.Windows.GridLength(200);
grid1.ColumnDefinitions.Add(col);
Run Code Online (Sandbox Code Playgroud)

这将产生XAML

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

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

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

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

ion*_*den 26

您可以这样指定:

对于自动尺寸的列:

GridLength.Auto
Run Code Online (Sandbox Code Playgroud)

对于星号柱:

new GridLength(1,GridUnitType.Star)
Run Code Online (Sandbox Code Playgroud)


Sho*_*rgh 6

我认为这有助于:

对于自动列:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = GridLength.Auto;
Run Code Online (Sandbox Code Playgroud)

或者比例网格长度:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = new GridLength(1, GridUnitType.Star);
Run Code Online (Sandbox Code Playgroud)

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

Greez Shounbourgh


Jam*_*ack 6

有三种类型的设置Width to Grid ColumnDefinitions:

对于百分比列:

 yourGrid.ColumnDefinitions[0].Width = new GridLength(1, GridUnitType.Star); 
Run Code Online (Sandbox Code Playgroud)

在xaml中:

<ColumnDefinition Width="1*"/>
Run Code Online (Sandbox Code Playgroud)

对于像素列

yourGrid.ColumnDefinitions[0].Width = new GridLength(10, GridUnitType.Pixel);
yourGrid.ColumnDefinitions[0].Width = new GridLength(10); 
Run Code Online (Sandbox Code Playgroud)

在xaml中:

<ColumnDefinition Width="10"/>
Run Code Online (Sandbox Code Playgroud)

对于自动列

yourGrid.ColumnDefinitions[0].Width = GridLength.Auto;
Run Code Online (Sandbox Code Playgroud)

在xaml中:

<ColumnDefinition Width="Auto"/>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!