Сетка WPF против Stackpanel

для WPF/Silverlight для разметки, лучше использовать сетку с большим количеством строк и столбцов, или тонн Stackpanels?

6 ответов


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

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

использование DockPanel в Silverlight 2


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


Я думаю, что сетка лучше. Я обычно настроить общий макет с сеткой и использовать несколько stackpanels здесь и там, чтобы сделать некоторые конкретные вещи. У меня также есть ощущение, что производительность лучше с сетками и что сетки обычно дают вам больше гибкости.


Я не думаю, что Grid-это лучшая идея.

например , если вы хотите вставить строку в существующий документ макет сетки (в середине)

там exising строка 1,2,3,4, то требование вставить новую строку между 1 и 2.

затем вам пришлось изменить 2,3,4 на 3,4,5 (найти все теги изменения....)

подумайте, если одна строка имеет 3-5 столбцов... это грязная работа-переупорядочивать все цифровое.!!!


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

например, на странице XAML я использую горизонтальную панель стека, как родительскую сетку, тогда, если мне нужен столбец, у меня есть отдельная "вертикальная" вложенная панель стека. Таким образом, горизонтальная stackpanel становится "сеткой", а вложенные вертикальные StackPanel становятся столбцами. Я считаю, что это легче читать и изменять строки и столбцы в сетке.


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