Below is a test application. It runs without incident. If I remove the comment arround the second TabBar, then Bang! at runtime:
TypeError: Error #1034: Type Coercion failed: cannot convert [EMAIL PROTECTED] to Class. at mx.controls::NavBar/::createNavChildren() at mx.controls::NavBar/mx.controls:NavBar::commitProperties() at mx.controls::ButtonBar/mx.controls:ButtonBar::commitProperties() at mx.controls::ToggleButtonBar/mx.controls:ToggleButtonBar::commitProperties() at mx.core::UIComponent/validateProperties() at mx.managers::LayoutManager/::validateProperties() at mx.managers::LayoutManager/::doPhasedInstantiation() at Function/http://adobe.com/AS3/2006/builtin::apply() at mx.core::UIComponent/::callLaterDispatcher2() at mx.core::UIComponent/::callLaterDispatcher() Someone please tell me why the second TabBar has a problem. I'm anticipating a Doh! moment. Paul <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="init()" > <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.XMLListCollection; [Bindable] public var myXML:XML = <a> <b label="L1"> <q>Q1</q> </b> <b label="L2"> <q>Q2</q> </b> </a>; [Bindable] public var my:XMLListCollection ; [Bindable] public var myArrColl:ArrayCollection = new ArrayCollection([{label:"L1", q:"Q1"},{label:"L2", q:"Q2"}]); public function init():void { my = new XMLListCollection(myXML.children()); } ]]> </mx:Script> <!-- ArrayCollection version --> <mx:TabBar dataProvider="{myArrColl}" labelField="label" /> <mx:DataGrid dataProvider="{myArrColl}" > <mx:columns> <mx:DataGridColumn dataField="label" /> <mx:DataGridColumn dataField="q" /> </mx:columns> </mx:DataGrid> <!-- XML version --> <!-- if this comment is removed, Flex is unhappy.. <mx:TabBar dataProvider="{my}" labelField="@label" /> ..but why? --> <mx:DataGrid dataProvider="{my}" > <mx:columns> <mx:DataGridColumn dataField="@label" /> <mx:DataGridColumn dataField="q" /> </mx:columns> </mx:DataGrid> </mx:Application>