Пример #1
0
        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);
                }
            }
        }