StackPanel против DataGrid против DockPanel в WPF - PullRequest
3 голосов
/ 06 декабря 2010

Мне нужно будет динамически генерировать квадратную матрицу «ящиков» (например, 2x2, 3x3 и т. Д.), Каждый из которых содержит текстовое поле и кнопку.Размер этих полей и текста также будет изменяться в зависимости от размера окна.Должен ли я подойти к этой проблеме, используя stackPanel, datagrid или dockpanel и каковы их преимущества или недостатки?Признательны за любые предложения.

Разработано WPF, VS2010.

Ответы [ 3 ]

7 голосов
/ 06 декабря 2010

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

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

Панель док-станции хороша, если у вас есть контент, который должен быть прикреплен сбоку, и некоторый другой контент для центра.

6 голосов
/ 06 декабря 2010

Возьмите добычу с панели UniformGrid .

2 голосов
/ 06 декабря 2010

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

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

Если вам не нужно динамически менять макет, я бы предложил, что элементы управления сеткой будут вашим лучшим выбором, поскольку вы можете разбить сетку на матрицу, которая вам нужна. Использование звездочки (*) для каждой стороны будет означать, что все поля будут меняться по размеру в соответствии с вашим окном. Функциональность ограничена, но в соответствии с вашими требованиями сетка покрыла бы ее.

Полезное руководство по макетам можно найти здесь .

...