public QuerySessionViewModel(IWindowService windowService, IRepository repository, ShortcutService shortcutService, IStatusService statusService, bool readOnly)
            : base(repository, windowService, shortcutService, statusService)
        {
            ReadOnly = readOnly;
            InitializeViewModesList();

            FilterCollection = new FilterCollectionViewModel(Repository.Tags);
            FilterCollection.FilterChanged += async(sender, args) => await UpdateMatchCount();

            UpdateMatchCount().Wait();

            DetailItem = new MediaItemViewModel(Repository);

            QueryResultViewModel = new QueryResultViewModel(Repository, ShortcutService, StatusService);
            QueryResultViewModel.SelectionChanged += async(s, a) =>
            {
                await QueryResultViewModelOnSelectionChanged(s, a);
            };

            EditMediaInfoViewModel = new EditMediaInfoViewModel(Repository, ShortcutService, StatusService, true, ReadOnly);

            ToolWindowState  = QueryToolWindowState.Filters;
            SelectedViewMode = ViewMode.Detail;
        }
 public override async Task Close()
 {
     QueryResultViewModel.Close();
     await EditMediaInfoViewModel.Close();
 }