2009-11-25 4 views
1

у меня есть это:Прокрутка нескольких столбцов, изменение размера панели?

scrollable panel

Каждый список является его собственным WrapPanel, и все они на другом WrapPanel, который находится в ScrollViewer. Если я не устанавливаю высоту самостоятельно для основного WrapPanel, он предполагает, что я хочу, чтобы WrapPanel был как можно выше, давая мне только один столбец, тогда как мне нужно столько столбцов, сколько необходимо для заполнения окна.

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

+0

Возможно, вам нужно просто сменить главную ориентацию WrapPanel на горизонтальную? Затем элемент будет отображаться не сверху вниз, а слева направо. Но все будет выглядеть очень похоже. –

+0

Если вы действительно хотите уйти, то, думаю, только вариант - создать свою собственную версию WrapPanel. –

ответ

0

В вашем примере снимка экрана и описания Я вижу элемент управления вкладкой, чей якорь установлен на верхний, левый, нижний и правый. На вкладке с AutoScroll установлено значение true. На вкладке я вижу FlowLayoutPanel. FlowLayoutPanel имеет свойство AutoSize, равное true. Я также вижу набор других панелей/пользовательских элементов управления, каждый из которых содержит заголовок и ряд флажков.

+0

Вы хотите сказать, что я должен делать? – BeaverusIV

+0

Это даст вам аналогичный внешний вид. Я не настраивал все настройки, чтобы убедиться, что он выглядит на 100%, но это даст вам 90% пути. –

+0

Жаль, что это не работает для WPF, который я хотел. – BeaverusIV

0

Вы не можете достичь этого стандартными элементами управления. Вы можете попытаться создать свою собственную реализацию WrapPanel. Но, на самом деле, глядя на оригинальные источники WrapPanel, я думаю, что это будет довольно сложно. Вы видите, что вы хотите, в основном, чтобы измерить, сколько столбцов может поместиться в текущем окне, в то время как каждый элемент в столбце может иметь любой размер. Как я вижу этот алгоритм, для получения конечного результата потребуются N * N итераций. Таким образом, у вас могут быть проблемы с производительностью.