public void OnNavigatedTo(NavigationContext navigationContext) { if ((null != navigationContext) && !navigationContext.Parameters["view"].Equals(_AlertSource)) { try { _AlertSource = (string)navigationContext.Parameters["view"]; Models.AlertManager Alert = _Container.Resolve <Models.AlertManager>(); // Replace Live list if (null != Lives) { _Disposables.Remove(Lives); } Lives?.Dispose(); Lives = Alert.GetLiveList(_AlertSource).ToReadOnlyReactiveCollection().AddTo(_Disposables); // View filter CollectionViewSource.GetDefaultView(Lives).Filter = x => { if (string.IsNullOrWhiteSpace(FavoriteQuery.Value)) { return(true); } // sanitize //string escaped = System.Text.RegularExpressions.Regex.Escape(FavoriteQuery.Value); //return System.Text.RegularExpressions.Regex.IsMatch(x.Title, $"({escaped})+"); return(0 <= (x as Models.LiveItem)?.Descriptors[SelectedFavoriteQueryTarget.Value.Value].IndexOf(FavoriteQuery.Value)); }; // Generate columns List <Models.LiveItemColumn> columns = new List <Models.LiveItemColumn>(); Models.LiveDescriptor[] descs = Alert.GetQueryTargets(_AlertSource).Keys.ToArray(); for (int i = 0; i < descs.Length; i++) { columns.Add(new Models.LiveItemColumn(descs[i].Label, $"Descriptors[{i}]")); } columns.Add(new Models.LiveItemColumn("Start Date", nameof(Models.LiveItem.StartDate))); columns.Add(new Models.LiveItemColumn("URL", nameof(Models.LiveItem.Url))); LiveColumns = columns.ToArray(); // Notify LiveList PropertyChanged to View RaisePropertyChanged(nameof(Lives)); RaisePropertyChanged(nameof(LiveColumns)); // Replace query type list FavoriteQueryTargets = Alert.GetQueryTargets(_AlertSource); RaisePropertyChanged(nameof(FavoriteQueryTargets)); SelectedFavoriteQueryTarget.Value = FavoriteQueryTargets.First(); // Refresh favorite CollectionViewSource.GetDefaultView(Favorites).Refresh(); } catch (Exception ex) { _logger.Error(ex); } } }