| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Проблема с Measure |
| Автор: AleksPingvin 5.12.2011, 15:53 | ||||
| Есть UserControl который представляет некий заголовок, под которым находятся куча данных. У источника данных объекта есть поле Collapsed( нотифайное разумеется) , которое показывает, на то, как показывать объект - свернутым (только заголовок) или нет. Примерно так:
Пишу свой контейнер, в методах MeasureOverride и AverrageOverride мне в случае если мой объект цельный и развернутый не влезает в контейнер, то его надо свернуть. Пишу примерно такой код (фрагмент AverrageOverride):
Так вот после изменения значения поля Collapsed и последующего измерения DesiredSize не изменилось. Да и визуально итем тоже не изменился. Как быть? Для теста вешал на клавишу изменения этого поля, в обычном контейнере все работает. Объект сворачивается и разворачивается. Но мне надо именно в MeasureOverride и AverrageOverride сколько будет занимать элемент в свернутом или не свернутом виде. Подскажите как быть? |
| Автор: Gvozdin 5.12.2011, 16:16 |
| Значит если ваш контейнер(который вместо StackPanel Name="container") не помещается целиком в availableSize в ArrangeOverride, то вы идете в дата контекст и устанавливаете там Collapsed = true. А почему вы думаете что Visibility вашей панели должен как-то повлиять на DesiredSize у ваших дочерних элементов? Вы спрашиваете их сколько они ХОТЯТ занять места, они и отвечают сколько они хотят. Если вы хотите что бы панель скрывалась когда она полностью не входит в контейнер то я бы предложил другой вариант: 1. Создаете dependency property HeighIsNotEnoughtForMe 2. В ArrangeOverride, если заданный availableSize вам мал, устанавливаете HeighIsNotEnoughtForMe = true 3. Тригером по HeighIsNotEnoughtForMe делаете вашей панели Visibility=Collapsed |
| Автор: AleksPingvin 5.12.2011, 18:25 |
| Я опечатался в коде )) везде item это curItem. Т.е я беру итем и у его данных меняю свойство и жду изменентя его размеров |
| Автор: Gvozdin 5.12.2011, 20:08 |
| От этого ничего не меняется |