protected void UpdateTransformersList() { DatabaseCommands.GetTransformersAsync(0, 256).ContinueOnSuccessInTheUIThread(transformers => { Transformers.Clear(); CleanGroup(); if (string.IsNullOrWhiteSpace(SearchText.Value)) { Transformers = new ObservableCollection <TransformerDefinition>(transformers); } else { Transformers = new ObservableCollection <TransformerDefinition>(transformers .Where(definition => definition.Name.IndexOf(SearchText.Value, StringComparison.InvariantCultureIgnoreCase) != -1)); } foreach (var transformer in Transformers.OrderBy(definition => definition.Name)) { var groupName = DetermineName(transformer); var groupItem = GroupedTransformers.FirstOrDefault( @group => string.Equals(@group.GroupName, groupName, StringComparison.OrdinalIgnoreCase)); if (groupItem == null) { groupItem = new Group(groupName); GroupedTransformers.Add(groupItem); } groupItem.Items.Add(new TransformerItem { GroupName = groupName, Name = transformer.Name, Transformer = transformer }); } OnPropertyChanged(() => GroupedTransformers); OnPropertyChanged(() => Transformers); }); }