2011-11-09 2 views
1

В настоящее время я работаю над проектом, который содержит окно, которое должно отображать от 1 до 9 пользовательских элементов управления.wpf интеллектуальная схема сетки

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

например. если выбрано 9 элементов, отображается сетка 3 х 3. Однако, если выбрано 8, то 2 строки из 3 будут показаны с рядом строк ниже. (с использованием colspan).

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

Неужели кто-нибудь сталкивался с этой проблемой раньше? Или можете предложить подходящий способ решить проблему?

Спасибо!

ответ

1

Попробуйте использовать WrapPanel и установите Width каждого объекта на 1/3 размера оберточной панели.

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

+0

Я буду исследовать с помощью оберточной панели и установки ширины объектов на 1/3 размера панелей оберток. Мне нужно будет проверить мода на количество элементов, чтобы вычислить ширину последних элементов. Благодарю. – seanzi

+0

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

+0

@Rachel UniformGrid выполняет то же самое, что и вы описали, но я думаю, что он более гибкий, потому что он не требует каких-либо жестко закодированных значений (через XAML) или вообще никакого кода. Просто установите количество столбцов, и ширина вычисляется автоматически. – Dave

0

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

<UniformGrid Columns="3" /> 

И это будет делать то, что вы просили, - если у вас есть 8 управления, вы» Получите 2x3 + 2 дополнительно ниже.

+0

Это действительно дает два ряда из трех элементов, но последние два элемента, не растягивается по горизонтали в оставшееся пространство. Это оставляет пустое пространство для предмета, которого я пытаюсь избежать. Спасибо – seanzi

+0

@ 53AN ах, извините, я не понимал, что вы хотели, чтобы последние два растянулись так. – Dave

Смежные вопросы