public override void Reload() { var selectedTagIds = TagButtons.Select(ibvm => ibvm.CurrentTag.Id); TagButtons.CollectionChanged -= OnTagButtonsChanged; var selectedOmniId = SelectedOmni?.Id ?? -1; Context.Dispose(); Context = OmniTagDatabaseContextFactory.GetNewContext(); AllOmnis = Context.Omnis.Where(o => o.DateDeleted == null).OrderBy(o => o.Summary).ToList(); var tags = new ObservableCollection <Tag>(Context.Tags.Where(t => t.DateDeleted == null).OrderBy(t => t.Name).ToList()); TagSearchDataContext.AllValues = tags; var selectedTagList = tags.Where(t => selectedTagIds.Contains(t.Id)) .ToList() .Select(t => new TagButtonViewModel(t)); TagButtons = new ObservableCollection <TagButtonViewModel>(selectedTagList); TagButtons.CollectionChanged += OnTagButtonsChanged; OnTagButtonsChanged(TagButtons, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); OmniSearchDataContext.SelectedValue = selectedOmniId == -1 ? null : OmniSearchDataContext.AllValues.SingleOrDefault(o => o.Id == selectedOmniId); }
private void ToggleTagSearch() { ShowTagSearch = !ShowTagSearch; if (!ShowTagSearch) { TagButtons.Clear(); } }
private void RemoveTag(object param) { var tagVM = param as TagButtonViewModel; if (tagVM == null) { return; } TagButtons.Remove(tagVM); }
private void OnTagButtonsChanged(object sender, NotifyCollectionChangedEventArgs e) { if (TagButtons.Count == 0) { OmniSearchDataContext.AllValues = new ObservableCollection <Omni>(AllOmnis); } else { OmniSearchDataContext.AllValues = new ObservableCollection <Omni>( AllOmnis.Where(o => TagButtons.All(vm => o.Tags.Contains(vm.CurrentTag))).ToList() ); } }
private void AddTag() { Tag tag = TagSearchDataContext.SelectedValue; if (tag == null) { tag = TagSearchDataContext.FilteredTags.SingleOrDefault(t => t.Name == TagSearchDataContext.FullSearchText); if (tag == null) { return; } } if (TagButtons.All(tb => tb.CurrentTag.Name != tag.Name)) { TagButtons.Add(new TagButtonViewModel(tag)); } TagSearchDataContext.FullSearchText = String.Empty; TagSearchDataContext.SelectedValue = null; }