Flex изменяет размеры Canvas, куда поместить такой код? (диаграмма внутри) - PullRequest
0 голосов
/ 21 мая 2009

У меня есть два холста A и B, A - дитя B. Размер A можно изменить с помощью некоторых действий пользователя, таких как добавление некоторых компонентов пользовательского интерфейса в его базу. A ограничен другим родительским холстом B, который должен показывать ручки прокрутки, если его дочерний элемент A становится слишком большим.

Я бы хотел, чтобы A имела одинаковую ширину и высоту B (или действительно близко), в то время как рассчитанная ширина и высота A меньше, чем у B.

Если w или h из A станут больше, чем у B, то A должно вырасти и B покажет прокрутку. Надеюсь, это понятно.

Мой вопрос: где и как я могу сделать такую ​​логику?

диаграмма холста http://www.picimg.com/uploads/18cd2277adde7d50da2bc708075f4fac.png

Ответы [ 2 ]

1 голос
/ 21 мая 2009

Класс UIComponent, от которого наследуется Canvas, имеет свойство minHeight и minWidth. Вы можете привязать minHeight / Width A к ширине и высоте B, поэтому при изменении размера B минимальные размеры A также меняются. Привязка к выражению также поддерживается (см. Пример ниже). B автоматически покажет полосы прокрутки, когда A станет слишком большим для одновременного отображения, вам просто нужно указать фиксированную высоту и ширину (или какое-либо другое ограничение размера) A также автоматически изменяет размер при добавлении детей.

<mx:Canvas id="B" width="..." height="...">
    <mx:Canvas id="A" minHeight="{B.height-20}" minWidth="{B.width-20}">
        <!-- your content widgets -->
    </mx:Canvas>
</mx:Canvas>
0 голосов
/ 21 мая 2009

Все, что вам нужно, это установить политику прокрутки на B, чтобы быть автоматически. Таким образом, если A становится слишком большим, B будет иметь полосы прокрутки. Это должно быть сделано в MXML.

<mx:Canvas name="B" width=100 height=100 scrollPolicy="auto">
    <mx:Canvas name="A" width=90 height=90>
        ...
    </mx:Canvas>
</mx:Canvas>
...