Свойства Width и MaxWidth не работают для WPF ColumnDefinitions - PullRequest
0 голосов
/ 28 января 2011

Я работаю с приложением, которое перетаскиваю элементы, и создаю сетки динамически на основе содержимого объектов, которые я перетаскиваю (для некоторых объектов мне потребуется создать сетку с 2 столбцами, а некоторые с 4,так далее).Это достаточно просто сделать, но когда я пытаюсь указать, насколько широкими я бы хотел, чтобы эти столбцы были, он не работает, а показывает сетки поверх друг друга.Я приложу, как выглядят столбцы.

В первом примере показан результат перетаскивания 5 объектов.Вы можете видеть, что спецификация ширины не имеет никаких эффектов.enter image description here

Второй пример - то же самое, но показывает, что сетки не соответствуют спецификациям ширины.Когда я добавляю объект «Email» на объект «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 ]

1 голос
/ 28 января 2011

Это ваш настоящий код? Если это так, я не думаю, что вы добавляете какие-либо столбцы в сетку.

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

В приведенном выше коде объект столбцов инициализируется с емкостью fieldItemList.Count, но не содержит объектов ColumnDefinition.

0 голосов
/ 28 января 2011

Вы добавляете (2 * fieldItemList.Count) столбцы. Я не думаю, что вы должны добавлять столбцы в цикл ... попробуйте сначала определить Grid в XAML, а затем перенести его на C #.

0 голосов
/ 28 января 2011

Попробуйте установить newGrid.HorizontalAlignment = HorizontalAlignment.Left;

Если сетка установлена ​​на растяжение и имеет только столбцы фиксированной ширины, ей не нужно заполнять оставшееся пространство, необходимое для заполнения. Вы также можете добавить дополнительный * размер столбца, чтобы занять оставшееся пространство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...