WPF: Почему вся любовь к элементу управления Grid?

Видел различные примеры приложений WPF. Я видел использование элемента управления Grid практически для всего, даже для самых простых вещей с одним столбцом или строкой.

Кроме того, шаблоны WPF начинаются с пустой сетки.

Для меня использование StackPanel или DockPanel менее подробно и лучше для обслуживания (подумайте о том, чтобы добавить строку позже и добавить +1 ко всем остальным строкам).

Почему Grid лучше или чего мне не хватает?


person Eduardo Molteni    schedule 15.03.2010    source источник


Ответы (4)


Я думаю, что отчасти причина того, что Grid является элементом по умолчанию, заключается в том, что он (немного) более удобен для дизайнеров.

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

person Reed Copsey    schedule 15.03.2010

Два слова: размер звезды. Grid позволяет изменять размер содержимого в соответствии с пространством, в котором оно содержится, без явного указания размера контейнера. Панели управления нет.

person Robert Rossney    schedule 15.03.2010
comment
Согласен, но это нужно только иногда, а не всегда. И вы обычно можете использовать DockPanel для того же эффекта. - person Eduardo Molteni; 15.03.2010
comment
Может быть, с похожим эффектом. Но если вы хотите разделить окно, скажем, пополам, вы не можете сделать это с помощью DockPanel. Не без выполнения действий, которые вам, вероятно, не следует делать, например, привязки к родительскому свойству ActualSize. - person Robert Rossney; 15.03.2010

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

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

person TomTom    schedule 15.03.2010

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

Например, в проекте, над которым я работаю сейчас, у меня есть окно, будет менеджером по доставке. Мне нужно три вида списка (отгрузки, пакеты, товары). У меня есть элемент управления сеткой с двумя столбцами; один со списком пакетов и разделителем сетки, другой с вложенной сеткой с двумя другими списками и разделителем сетки.

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

Кори

person CodeWarrior    schedule 15.03.2010