Width和MaxWidth属性不适用于WPF ColumnDefinitions

时间:2011-01-27 21:59:12

标签: c# wpf visual-studio

我正在处理一个应用程序,我正在拖动和删除项目,并根据我正在删除的对象的内容动态地创建网格(有些对象需要我创建一个包含2列的网格,有些包含4列,等等)。这很简单,但是当我尝试指定这些列的宽度时,它不起作用,并且它显示了彼此顶部的网格。我会附上列的样子。

第一个示例显示了拖放的5个对象的结果。您可以看到宽度规范没有效果。 enter image description here

第二个示例是相同的,但显示网格不遵循宽度规范。当我将“电子邮件”对象放到“Zip”对象上时,它会覆盖网格。 enter image description here

以下是我用来创建定义的代码。正如你可以看到我迭代的每个项目,我正在创建一个标签。

                /*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);

如何让它尊重我分配给列定义的宽度边界?

3 个答案:

答案 0 :(得分:1)

这是你的实际代码吗?如果是这样,我认为你没有在网格中添加任何列。

  List<ColumnDefinition> columns = new List<ColumnDefinition>  (fieldItemList.Count);
  foreach (ColumnDefinition column in columns)
            {

在上面的代码中,columns对象的初始化容量为fieldItemList.Count,但不包含任何ColumnDefinition对象。

答案 1 :(得分:0)

尝试设置newGrid.HorizontalAlignment = HorizontalAlignment.Left;

如果网格设置为拉伸并且只有固定宽度的列,则它没有任何东西可以填充它需要填充的剩余空间。您还可以添加额外的*大小的列以占用任何剩余空间。

答案 2 :(得分:0)

您正在添加(2 * fieldItemList.Count)列。我不认为你应该在循环中添加列...尝试首先在XAML中定义Grid,然后将其移植到C#。