public List <HierarchicalViewModelBase> LoadModel(HierarchicalViewModelBase parent)
        {
            var          service = new TaxaService(User);
            List <Taxon> model   = null;

            if (parent == null)
            {
                model = service.GetTopLevelTaxa();
            }
            else
            {
                model = service.GetTaxaForParent((parent as TaxonViewModel).TaxaID.Value);
            }

            if (model != null)
            {
                var temp = model.Where((taxon) => {
                    return(_options == LookupOptions.TaxonExcludeAvailableNames ? !taxon.AvailableName.ValueOrFalse() : true);
                }).Select((m) => {
                    return(new TaxonViewModel(parent, m, _explorer.GenerateTaxonDisplayLabel));
                });

                var list = new List <HierarchicalViewModelBase>(temp);
                return(list);
            }

            return(null);
        }
        private void BuildTaxaChildrenViewModel(HierarchicalViewModelBase item, int taxaID)
        {
            // The model node is a Taxon favorites, so we can get the 'real' taxon children for it...
            item.Children.Clear();

            var          taxaService = new TaxaService(User);
            List <Taxon> taxa        = taxaService.GetTaxaForParent(taxaID);

            foreach (Taxon taxon in taxa)
            {
                TaxonViewModel child = new TaxonViewModel(item, taxon, null);
                if (child.NumChildren > 0)
                {
                    child.LazyLoadChildren += new HierarchicalViewModelAction(viewModel_LazyLoadChildren);
                    child.Children.Add(new ViewModelPlaceholder("Loading..."));
                }
                item.Children.Add(child);
            }
        }