У меня есть панель обертки, которая будет содержать переменное количество элементов управления.
Я хочу, чтобы ориентация была вертикальной (поскольку объекты внутри будут иметь фиксированную ширину, но переменную высоту).
Но проблема, с которой я сталкиваюсь, заключается в том, что при наличии полосы прокрутки высота бесконечна, поэтому элементы никогда не переносятся во второй столбец. Полоса прокрутки необходима, так как часто будет больше объектов, чем возможно разместить на одном экране. Я могу остановить это, установив фиксированную высоту, но это неприемлемое решение, поскольку разумная фиксированная высота будет отличаться для каждого выбора.
По сути, мне нужен WrapPanel
, высота которого динамически изменяется в зависимости от ширины панели и количества элементов, содержащихся внутри.
Проиллюстрировать:
Если панель достаточно широка, чтобы показать 3 столбца, она будет:
| 1 5 9 |
| 2 6 - |
| 3 7 - | Высота=4
| 4 8 - |
Но если пользователь изменит размер окна до такой степени, что оно может вместить только 2 столбца, высота увеличится:
| 1 6 |
| 2 7 |
| 3 8 | Высота = 5
| 4 9 |
| 5 - |
Кроме того, я не уверен, насколько это возможно, но в идеале я хотел бы расположить элементы горизонтально, но сохранить вертикальную ориентацию, чтобы они были упорядочены:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
Может ли кто-нибудь сказать мне, как начать с этого? Я предполагаю, что это возможно с пользовательской реализацией WrapPanel
, но я немного запутался, как начать.
Спасибо,
WrapGridPanel
: stackoverflow.com/questions/4598377/ - person Fredrik Hedblad   schedule 19.06.2012