WPF ListBox не понимает, что его элементы изменили размер - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть ListBox, который содержит количество User элементов, которые DataTemplate d отображаются как UserControl s в ListBox.Каждый UserControl может быть расширен в размере.Начнем с того, что ListBox достаточно большой, чтобы отобразить их все в нерасширенном состоянии.Проблема, с которой я столкнулся, заключается в том, что когда некоторые из этих UserControl расширяются вместе, они выходят за пределы видимой области ListBox.ListBox не распознает этот факт, и ScrollBar s не отображаются, даже если для них установлено значение Visible.

. Я использую DoubleAnimation s для изменения высоты UserControl, когда пользовательнажимает на кнопку в каждом.Есть ли что-то, что я должен сделать, или какая-то настройка на ListBox, которую нужно установить, чтобы заставить его регистрировать изменения размера UserControl s, которые представляют его элементы, и отображать ScrollBar s, когда это необходимо?*

Edit >>>

Я отследил проблему до пользовательского WrapPanel, который я использую в ListBox.ItemsPanel.Когда я его удаляю или заменяю стандартными WrapPanel, при необходимости появляются ScrollBar s.Я получил код для Panel из хорошей статьи о создании пользовательских панелей WPF .Кто-нибудь может увидеть, чего не хватает в коде, приведенном в статье, и почему это может помешать отображению ScrollBar s?

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Я решил снова написать собственный код WrapPanel, и на этот раз он работал правильно! Сравнивая новую версию с предыдущей версией, я мог видеть, что + отсутствовал в + = при измерении, и поэтому Panel считал, что элементы были намного меньше, чем они были на самом деле ... следовательно, нет ScrollBar s.

Итак, если у вас возникла эта проблема, внимательно проверьте свой измерительный код.

0 голосов
/ 19 февраля 2011

Интересно, обычно ли ListBoxes делают то, что вы ожидаете?Вы можете попробовать вызвать InvalidateMeasure / Layout в ListBox, если вы знаете, когда изменяются размеры элементов, просто чтобы посмотреть?

...