2010-03-30 3 views
6

Я пробовал Google, и я попробовал Bing безрезультатно. Кто-нибудь здесь имеет представление о том, как предотвратить появление частичных элементов в списке в WPF? В случае, если это не имеет смысла, вот пример: Listbox имеет высоту 200 пикселей - каждый элемент имеет высоту 35 пикселей. Это означает, что я могу показать 5.7 предметов. 7/10 пункта нежелательно. Я бы хотел ограничить его показом всего 5 предметов. Затем пользователь может просмотреть дополнительные элементы.Не показывать частичные элементы в списке WPF

Должен ли я A) пытаться динамически изменять список или ScrollViewer ViewPort так, чтобы он идеально вписывался? Или B) реализовать пользовательскую панель, которая не устраивала бы ребенка, чья желаемая высота больше, чем оставшееся вертикальное пространство?

Любые мысли были бы весьма благодарны. Последнее примечание: если кто-нибудь знает о стороннем контроле (списке или сетке), который сделает это, я тоже буду этому заинтересован.

+0

hmmm, ну, в WinForms ListBox имеет параметр: IntegralHeight AFAIK, WPF ListBox этого не делает. –

ответ

1

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

Вы также можете попробовать ListView вместо ListBox. Возможно, я ошибаюсь, но думаю, что ListView не показывает частичные, или, возможно, имеет возможность не показывать частичные строки.

+0

Я посмотрю на список. Мы не можем предварительно отсортировать список. Его высота будет расти, если пользователь изменит размер окна. –

+2

Хорошо, что вы Дэвид за правильное изменение размера! Не делать этого - мой главный мозоль. –

+0

На самом деле, мой реальный ответ должен был быть: «Не беспокойтесь». То, что вы описываете, - обычное поведение в списке; Я сомневаюсь, что вы потеряете клиентов из-за этого. – MusiGenesis

1

Я думал об этом сегодня, так как мой проект боролся с этой проблемой. Мои мысли связаны с моим проектом, но должны быть применимы. Я предполагаю MVVM ViewModel, но он будет работать без него.

Привяжите свойство к высоте контейнера, в котором находится ListBox, затем привяжите высоту ListBox к тому, что с помощью ValueConverter, чтобы заставить ListBox расширяться или сжиматься поэтапно в зависимости от высоты одного элемента. Это может показаться немного забавным при изменении размера, но с короткой анимацией может выглядеть отлично.

+0

Можете ли вы подробнее рассказать об этом ответе? –

+0

В этот уик-энд я попытаюсь бросить простой образец –

1

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

1

Мое голосование - это индивидуальная панель для каждого элемента. Эта панель не отображается, если она не может отображаться полностью. Список может изменяться по мере необходимости, поскольку его единственная задача - быть изменяемым по размеру контейнером, который предоставляет область для панелей. Панели могут расти и сокращаться по мере необходимости.

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