I tried different combinations of ValidateNow() and CallLater() with no results. You were right though, I was calling it in the wrong place. I call mapTOC.ExpandChildrenOf(....) in the mapLoadComplete function and success! So I end up with something like this:
private function config(event:AppEvent):void
{
.
.
map.addEventListener(MapEvent.Load, mapLoadComplete);
.
.
.
// Populate TOC control w/ live layers
mapTOC.map = map;
mapTOC.excludeLayers = getBasemaps();
mapTOC.excludeGraphicsLayers = true;
}
//map load complete
private function mapLoadComplete(event:MapEvent):void
{
SiteContainer.dispatchEvent(new AppEvent(AppEvent.LAYER_LOADED, false, false, null));
mapTOC.expandChildrenOf(mapTOC.firstVisibleItem, true);
}