Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Width和MaxWidth属性不适用于WPF列定义_C#_Wpf_Visual Studio - Fatal编程技术网

C# Width和MaxWidth属性不适用于WPF列定义

C# Width和MaxWidth属性不适用于WPF列定义,c#,wpf,visual-studio,C#,Wpf,Visual Studio,我正在使用一个应用程序,我正在拖放项目,并根据我正在拖放的对象的内容动态地创建网格(有些对象需要我创建一个包含2列的网格,有些包含4列,等等)。这很简单,但当我试图指定这些列的宽度时,它不起作用,而是在每个列的顶部显示网格。我将附加柱的外观 第一个示例显示了拖放5个对象的结果。您可以看到宽度规范没有任何影响。 第二个示例与此相同,但显示栅格不符合宽度规范。当我把一个“Email”对象放到“Zip”对象上时,它覆盖在网格上。 下面是我用来创建定义的代码。正如您所看到的,对于我迭代的每个项目,我

我正在使用一个应用程序,我正在拖放项目,并根据我正在拖放的对象的内容动态地创建网格(有些对象需要我创建一个包含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,我的观点是,在空集合上进行迭代没有任何作用!因为您没有添加任何列,所以不能期望它们设置列宽!