private ItemViewModel(Item item, ItemViewModel parent)
        {
            IsSelected = true;
            if (item != null)
            {
                _item = item;
                _parent = parent;

                _children = new ObservableCollection<ItemViewModel>(
                    (from child in _item.Children
                     select new ItemViewModel(child, this))
                        .ToList<ItemViewModel>());
            }
        }
 void VerifyMatchingPeopleEnumerator(string searchText,ItemViewModel item)
 {
     var matches = FindMatches(searchText, item);
     _matchingItemEnumerator = matches.GetEnumerator();
 }
        private void LoadItems()
        {
            // In a real app this method would access a database.
            //var items= new Item
            //{
            //    Name = "CEO",
            //    Id = 1,
            //    Children =
            //    {
            //        new Item
            //        {
            //            Name="Software Support",
            //            Id = 2,
            //        },
            //        new Item
            //        {
            //            Name="Director HR/Finance",
            //            Id = 3,
            //            Children=
            //            {
            //                new Item
            //                {
            //                    Name="Reconcillar",
            //                    Id = 4,
            //                },
            //                new Item
            //                {
            //                    Name="HR Manager",
            //                    Id = 5,
            //                }
            //            }
            //        },
            //        new Item
            //        {
            //            Name="Director Of Sales",
            //            Id = 6,
            //            Children=
            //            {
            //                new Item
            //                {
            //                    Name="Regional Manager NE",
            //                    Id = 7,
            //                },
            //                new Item
            //                {
            //                    Name="Regional Manager MidWest",
            //                    Id = 8,
            //                    Children=
            //                    {
            //                        new Item
            //                        {
            //                            Name="Store Manager",
            //                            Id = 9,
            //                            Children =
            //                                {
            //                                    new Item
            //                                    {
            //                                        Name="Sales Representative"
            //                                    },
            //                                    new Item
            //                                    {
            //                                        Name="Store Clerk"
            //                                    }
            //                                }
            //                        },
            //                    }
            //                },
            //                new Item
            //                {
            //                    Name="Regional Manager SE",
            //                    Id = 10,
            //                },
            //            }
            //        },
            //        new Item
            //          {
            //              Name = "Director Of Operations",
            //              Id = 11,
            //              Children =
            //              {
            //                  new Item
            //                         {
            //                             Name = "Inventory Manager",
            //                             Id = 12,
            //                             Children =
            //                                 {
            //                                     new Item
            //                                     {
            //                                         Name = "Service Manager",
            //                                         Id = 13,
            //                                         Children=
            //                                             {
            //                                                 new Item
            //                                                 {
            //                                                     Name = "Service Tech",
            //                                                     Id = 14,
            //                                                 }
            //                                             }
            //                                     }
            //                                 }
            //                         }
            //              }
            //          }

            //    }
            //};

            var item1 = new Item
                        {
                            Name = "CEO",
                            Id = 1,
                        };
            var item2 = new Item
            {
                Name = "Service Manager",
                Id = 2,
            };
            var rootItem1 = new ItemViewModel(item1);
            var rootItem2 = new ItemViewModel(item2);
            Suggestions = new ObservableCollection<ItemViewModel>();
            Suggestions.Add(rootItem1);
            Suggestions.Add(rootItem2);
        }
        IEnumerable<ItemViewModel> FindMatches(string searchText, ItemViewModel item)
        {
            //if ((item.Name.StartsWith(searchText, StringComparison.CurrentCultureIgnoreCase) &&
            //    !(String.Equals(item.Name, searchText, StringComparison.CurrentCultureIgnoreCase))))
            //    yield return item;

            if (item.NameContainsText(searchText) || string.IsNullOrEmpty(searchText))
                yield return item;

            foreach (ItemViewModel match in item.Children.SelectMany(child => FindMatches(searchText, child)))
                yield return match;
        }