Ошибка: не удалось разрешить ‹mx: columns› в реализацию компонента

У меня возникла проблема с этой ошибкой во время компиляции моего веб-приложения Flash

Error: Could not resolve <mx:columns> to a component implementation.

Вот то, что было раньше (и это будет компилироваться)

<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml" verticalScrollPolicy="auto">
<mx:AdvancedDataGrid id="myDataGrid" 
            width="100%"
            showHeaders="false" 
            includeInLayout="{myDataGrid.visible}"
            defaultLeafIcon="{null}"
            horizontalGridLines="true"
            verticalGridLines="true"
            horizontalGridLineColor="#E4E4E4"
            verticalGridLineColor="#E4E4E4"
            rowCount="6"
            minHeight="94"
            variableRowHeight="true"
            selectable="false"
            >  

    <mx:columns>
        <mx:AdvancedDataGridColumn  dataField="Property" headerText="Property" backgroundColor="#E5EFF5" width="0.5" wordWrap="true"/>
        <mx:AdvancedDataGridColumn  dataField="Value" headerText="Value" backgroundColor="white" width="0.5" itemRenderer="MyCustomRenderer"/>
        <mx:AdvancedDataGridColumn  dataField="RowIdentifier" visible="false"/>
    </mx:columns> 
</mx:AdvancedDataGrid> 
</mx:Box>

Теперь я хочу изменить его на следующее

//In ActionScript
package widgets
{
import mx.controls.AdvancedDataGrid;

public class CustomAdvancedDataGrid extends AdvancedDataGrid
{
    public function CustomAdvancedDataGrid()
    {
    }

    override protected function measure():void
    {
        super.measure();
        if(this.dataProvider != null && this.dataProvider.length > 0)
        {
            this.measuredHeight = this.measureHeightOfItems(0, dataProvider.length);
        }
    }
}
}


// In Modified mxml to use the subclass
<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:customWidgets="widgets.*"
    verticalScrollPolicy="auto">
<customWidgets:CustomAdvancedDataGrid id="myDataGrid" 
            width="100%"
            showHeaders="false" 
            includeInLayout="{myDataGrid.visible}"
            defaultLeafIcon="{null}"
            horizontalGridLines="true"
            verticalGridLines="true"
            horizontalGridLineColor="#E4E4E4"
            verticalGridLineColor="#E4E4E4"
            rowCount="6"
            minHeight="94"
            variableRowHeight="true"
            selectable="false"
            >  

    <mx:columns>
        <mx:AdvancedDataGridColumn  dataField="Property" headerText="Property" backgroundColor="#E5EFF5" width="0.5" wordWrap="true"/>
        <mx:AdvancedDataGridColumn  dataField="Value" headerText="Value" backgroundColor="white" width="0.5" itemRenderer="MyCustomRenderer"/>
        <mx:AdvancedDataGridColumn  dataField="RowIdentifier" visible="false"/>
    </mx:columns> 
</customWidgets:CustomAdvancedDataGrid> 
</mx:Box>

Я добавил mx.swc в путь компилятора Flex, как было предложено в другой ссылке на stackoverflow, но это не помогло.

Любая помощь приветствуется.


person user2789284    schedule 07.08.2015    source источник
comment
Может ли кто-нибудь подсказать, как это можно сделать в ActionScript?   -  person user2789284    schedule 08.08.2015


Ответы (1)


Поскольку ваш подкласс AdvancedDataGrid находится в другом пространстве имен, член columns должен находиться в том же пространстве имен:

<customWidgets:CustomAdvancedDataGrid ...>
    <customWidgets:columns>
        <mx:AdvancedDataGridColumn ...>
    </customWidgets:columns>
</customWidgets:CustomAdvanceDataGrid>
person Bill Turner    schedule 07.08.2015
comment
Большое Вам спасибо. Это сделало это. Но столбцы все еще находятся в пространстве имен mx, верно? - person user2789284; 10.08.2015
comment
Вы имеете в виду элементы AdvancedDataGridColumn? Да, они все еще находятся в пространстве имен mx. - person Bill Turner; 11.08.2015