Дети Dojo StackContainer не меняют размеры в браузере - PullRequest
1 голос
/ 25 мая 2010

У меня есть следующий вложенный макет в приложении Dojo 1.4:

BorderContainer 1

-> Стек-контейнер 1

-> -> BorderContainer 2

-> -> BorderContainer 3

Размер StackContainer по ширине и высоте составляет 100%. Когда я изменяю размер окна браузера с помощью функции максимизации / восстановления, StackContainer корректно изменяет размеры до центральной области своего родительского BorderContainer.

Проблема, с которой я столкнулся, заключается в том, что дочерние элементы StackContainer (BorderContainer 2 и 3) не изменяют размер в contentBox StackContainer.

Есть ли что-то особенное, что вам нужно сделать, чтобы принудительно изменить размер детей StackContainer? Я пытался вызвать StackContainer1.resize (), но это не имеет значения.

Заранее спасибо.

Дополнительная информация:

Спасибо за ответ Пеллер. Иерархия виджетов, которая содержит StackContainer, на самом деле является пользовательским виджетом, поэтому StackContainer фактически не находится непосредственно в BorderContainer, но его высота и ширина явно установлены на 100%. Это работает, и размер StackContainer корректно изменяется в браузере. Прямыми потомками стека-контейнера являются BorderContainers, и именно эти BorderContainers не изменяются при изменении размера StackContainer. Точная разметка:

<div dojoType="dijit.layout.StackContainer" style="height:100%;width:100%;">
    <div dojoType="dijit.layout.BorderContainer" gutters="false" style="height:100%;width:100%;padding:0;" id="bcWrongSize">
    </div>
</div>

Это BorderContainer 'bcWrongSize', размер которого не изменяется с помощью родительского StackContainer. Встроенная высота и ширина, указанные в BorderContainer, заменяются на явные размеры в пикселях с помощью StackContainer. Однако при изменении размера браузера StackContainer корректно изменяет размеры родительского виджета, но явные высота и ширина в BorderContainer неверны. Incedentally, метод расположения на StackContainer вызывается, и это изменяет размер BorderContainer (являющийся видимым дочерним элементом). Однако измерения _contentBox, которые он передает в BorderContainer, являются измерениями StackContainer ДО его изменения размера. Ширина и высота, вычисленные с помощью dojo.marginBox, являются неверными (offsetWidth и offsetHeight - это размеры, которые были до максимизации браузера). Может быть, эта проблема связана с тем, что StackContainer является subContainerWidget пользовательского виджета и поэтому имеет ширину и высоту 100%?

1 Ответ

3 голосов
/ 26 мая 2010

У нас была похожая проблема в проекте. Ниже приведен фрагмент, который работал для нас. Обратите внимание на использование региона для stackContainer (он находится в bordercontainer) и отсутствие высоты / ширины на контейнерах с внутренней границей.

<div dojotype="dijit.layout.StackContainer" jsid="buttonStack" region="bottom" style="height: 180px">
      <div jsid="selectionButtons" dojotype="dijit.layout.BorderContainer" gutters="false">
           <div dojotype="dijit.layout.ContentPane" region="bottom">
                <button id="btnClearSelection" dojotype="dijit.form.Button" 
                     label="Clear Selection" disabled> </button>
                <button id="btnClearAll" dojotype="dijit.form.Button" 
                     label="Clear All" disabled> </button>
            </div>
      </div>
<div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...