繁体   English   中英

Width和MaxWidth属性不适用于WPF ColumnDefinitions

[英]Width and MaxWidth properties not working for WPF ColumnDefinitions

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

第一个示例显示了5个对象被拖放的结果。 您可以看到宽度规格无效。 在此处输入图片说明

第二个示例是同一件事,但显示出网格未遵循宽度规范。 当我将“电子邮件”对象拖放到“邮编”对象上时,它会覆盖网格。 在此处输入图片说明

这是我用来创建定义的代码。 如您所见,对于要迭代的每个项目,我都在为其创建标签。

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

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

那是您的实际代码吗? 如果是这样,我认为您不会在网格中添加任何列。

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

在上面的代码中,column对象正在使用fieldItemList.Count的容量进行初始化,但不包含任何ColumnDefinition对象。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM