private void OnFilterLoaded(object sender, RoutedEventArgs e) { _control = (FilterControl)sender; int objectsCount = 0; Dictionary <UserTag, int> existsTags = new Dictionary <UserTag, int>(); foreach (IUserTagsHandler obj in _taggedObjects) { foreach (UserTag tag in obj.Tags) { int count; existsTags.TryGetValue(tag, out count); existsTags[tag] = count + 1; } objectsCount++; } _control.AvalibleTags = _avalibleTags; _control.SetCheckedTags(existsTags.SelectWhere(p => p.Value == objectsCount, p => p.Key)); _control.SetUncheckedTags(_avalibleTags.Where(t => !existsTags.ContainsKey(t))); _control.IsShownTags = true; }