WPF Grid: есть ли простой способ перенастроить элементы строки, если мне нужно вставить новые строки? - PullRequest
31 голосов
/ 19 мая 2011

Кажется, что определения строк и столбцов сетки жестко запрограммированы следующим образом:

Grid.Row="3" Grid.Column="1"

Я нахожусь в процессе разработки нового приложения WPF и мне постоянно приходится добавлять и удалять новые строкииз моей сетки, как клиент решает, как должна выглядеть форма.Я обнаружил, что это довольно утомительная задача.Если вставить строку вверху, мне придется вручную изменить все индексы строк в XAML под только что вставленной строкой.

Есть ли простой способ автоматической настройки всех строк?

Ответы [ 4 ]

36 голосов
/ 21 июля 2017

В Visual Studio 2015 вы также можете навести курсор на край строки, и появится небольшое выпадающее окно. Когда вы нажимаете стрелку вниз, двумя из вариантов являются «переместить строку до» и «переместить строку после». Это лучший способ, который я нашел.

Пример изображения:

screenshot

5 голосов
/ 19 мая 2011

A Grid - это сетка , а строки и столбцы нумеруются по определенной причине. Это как кусок миллиметровки, нарезанный на фиксированное количество квадратов. Поскольку число строк и столбцов фиксировано, вы можете выполнять мощные функции, такие как объединение строк и столбцов. И наоборот, не гибкий для переменного числа строк или столбцов.

Если вам нужно переменное количество строк или вы постоянно добавляете строки во время разработки, возможно, Grid не самый лучший элемент дизайна для вас. Или, что еще лучше, вы можете использовать Grid в сочетании с другим элементом макета, чтобы получить необходимую гибкость.

Например, вы можете поместить все свои переменные строки в одну строку Grid, и теперь количество строк в вашей сетке больше не меняется. Но тогда вам понадобится элемент макета, который поддерживает переменное количество строк, чтобы поместить в эту строку Grid. Ну, есть из чего выбирать, но два полезных примера это StackPanel и DockPanel.

Элемент макета DockPanel, в частности, очень эффективен для переменного числа строк или столбцов, особенно когда используется как DockPanels в DockPanels или других комбинациях. Все, что вам нужно для решения этой проблемы с макетом, - это разделить и победить !

Вот введение в DockPanel: Учебное пособие по WPF: панель Dock

2 голосов
/ 20 мая 2011

Нет простого способа автоматически настроить ваши строки / столбцы для Grid.

Потенциальная альтернатива, которую я использовал в прошлом, это UniformGrid, так как ей не нужна ссылка на строку / столбец в каждом элементе. Это удобно для блокировки заполнителей для данных.

Если вы делаете первоначальный дизайн, я бы порекомендовал использовать интерфейс Drag / Drop в visual studio или инструмент дизайна, такой как Balsamiq или Blend . Balsamiq - мой любимый продукт, поскольку он намеренно не похож на настоящее приложение, поэтому клиенты не зацикливаются на фактическом виде и вместо этого сосредотачиваются на данных.

0 голосов
/ 19 апреля 2017

Я знаю, что это очень старый вопрос, но в случае, если кто-то еще сталкивался с ним, в Visual Studio 2013 (может быть, и раньше, я тоже не уверен), вы можете просто навести курсор мыши на край сетки, и это позволит вам разбить ряд в два ряда.

Это сделает строки заданной числовой высотой, поэтому вам, вероятно, придется вернуться назад и затем изменить на «Авто» или «*», или на то, что вы хотели бы использовать. Кроме того, в исходной строке все что угодно охватывает обе строки, поэтому вам нужно будет удалить атрибут RowSpan = "2" для этих элементов и поместить их в правильные строки, но при этом все элементы в нижних строках будут автоматически перемещены вниз.

Он не полностью автоматический и требует небольшой очистки, но если у вас много строк, это быстрее, чем перенумеровывать все вручную.

...