Подтвердить что ты не робот

WPF Grid: Есть ли простой способ перенастроить элементы строки, если мне нужно вставить новые строки?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Здесь введение в DockPanel: Учебное пособие по WPF: панель док-станции

Ответ 2

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

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

screenshot

Ответ 3

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

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

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

Ответ 4

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

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

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