C# Width和MaxWidth属性不适用于WPF列定义
我正在使用一个应用程序,我正在拖放项目,并根据我正在拖放的对象的内容动态地创建网格(有些对象需要我创建一个包含2列的网格,有些包含4列,等等)。这很简单,但当我试图指定这些列的宽度时,它不起作用,而是在每个列的顶部显示网格。我将附加柱的外观 第一个示例显示了拖放5个对象的结果。您可以看到宽度规范没有任何影响。 第二个示例与此相同,但显示栅格不符合宽度规范。当我把一个“Email”对象放到“Zip”对象上时,它覆盖在网格上。 下面是我用来创建定义的代码。正如您所看到的,对于我迭代的每个项目,我都在为其创建一个标签C# Width和MaxWidth属性不适用于WPF列定义,c#,wpf,visual-studio,C#,Wpf,Visual Studio,我正在使用一个应用程序,我正在拖放项目,并根据我正在拖放的对象的内容动态地创建网格(有些对象需要我创建一个包含2列的网格,有些包含4列,等等)。这很简单,但当我试图指定这些列的宽度时,它不起作用,而是在每个列的顶部显示网格。我将附加柱的外观 第一个示例显示了拖放5个对象的结果。您可以看到宽度规范没有任何影响。 第二个示例与此相同,但显示栅格不符合宽度规范。当我把一个“Email”对象放到“Zip”对象上时,它覆盖在网格上。 下面是我用来创建定义的代码。正如您所看到的,对于我迭代的每个项目,我
/*Initialize Grid Layout*/
Grid newGrid = new Grid();
newGrid.MinHeight = 40;
/*Define Column Definitions*/
List<ColumnDefinition> columns = new List<ColumnDefinition> (fieldItemList.Count);
foreach (ColumnDefinition column in columns)
{
ColumnDefinition labelColumn = new ColumnDefinition();
/*Specify Width Dimensions*/
labelColumn.Width = new GridLength(150);
labelColumn.MaxWidth = 200.0;
newGrid.ColumnDefinitions.Add(labelColumn);
newGrid.ColumnDefinitions.Add(column);
}
/*Define Row Definitions*/
RowDefinition row = new RowDefinition();
newGrid.RowDefinitions.Add(row);
/*初始化网格布局*/
Grid newGrid=新网格();
newGrid.MinHeight=40;
/*定义列定义*/
列表列=新列表(fieldItemList.Count);
foreach(列中的列定义列)
{
ColumnDefinition labelColumn=新ColumnDefinition();
/*指定宽度标注*/
labelColumn.Width=新网格长度(150);
labelColumn.MaxWidth=200.0;
newGrid.ColumnDefinitions.Add(labelColumn);
newGrid.ColumnDefinitions.Add(column);
}
/*定义行定义*/
RowDefinition行=新的RowDefinition();
newGrid.RowDefinitions.Add(行);
如何使其符合指定给列定义的宽度边界?尝试设置
newGrid.HorizontalAlignment=HorizontalAlignment.Left代码>
如果栅格设置为“拉伸”,并且只有固定宽度的列,则它没有任何东西可以填充需要填充的剩余空间。您还可以添加一个额外的*大小的列以占用任何剩余空间。您正在添加(2*fieldItemList.Count)列。我认为你不应该在循环中添加列。。。尝试先在XAML中定义网格
,然后将其移植到C#。这是您的实际代码吗?如果是这样,我认为您不会向网格中添加任何列
List<ColumnDefinition> columns = new List<ColumnDefinition> (fieldItemList.Count);
foreach (ColumnDefinition column in columns)
{
List columns=新列表(fieldItemList.Count);
foreach(列中的列定义列)
{
在上面的代码中,columns对象的初始化容量为fieldItemList.Count,但不包含任何ColumnDefinition对象。我认为这不是问题所在。设置为stretch的网格不应拉伸固定宽度的列。很难理解您的代码如何与屏幕截图相匹配,但您确定您的C列定义没有拉伸?可能是网格的子项没有拉伸。请尝试使用newGrid.ShowGridLines=true;
为网格打开网格线。您是正确的,列表定义在这一点上没有实现任何功能,它仅用于迭代目的。虽然这并不能解决我的问题,您确实指出了我的一些代码,这些代码毫无用处。Thanks@CitadelCSAlum,我的观点是,在空集合上进行迭代没有任何作用!因为您没有添加任何列,所以不能期望它们设置列宽!