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; }