kagamihogeの日記

kagamihogeの日記です。

をコンポーネントの実装に解決できませんでした。

DataGrid を拡張してごにょごにょ、を試していたときのこと。

package mycomponent
{
    public class ExtDataGrid extends DataGrid {
        // 省略
    }
}

拡張内容は省略するとして。mxml の方ではこんな使い方をしたら、タイトルのコンパイルエラーが発生した。

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:mycomponent="mycomponent.*"
    ...>
    <mycomponent:ExtDataGrid id="dataGrid">
        <mx:columns> <!-- この行でコンパイルエラー -->
            <mx:DataGridColumn ... />
        </mx:columns>
    </mycomponent:ExtDataGrid>
</mx:Application>

解決方法は、mx:columns を mycomponent:columns にする。エラーの原因について。columns の実体(?)は、DataGrid の override public function set columns(value:Array):void である。今回は DataGrid を拡張した ExtDataGrid を使用しており、mycomponent という名前空間にマッピングさせている。そのため、mycomponent の名前空間経由で columns プロパティを参照するようにしないとコンパイルエラーになるようだ。