예제 #1
0
        private async Task startSearch(string Query, bool AddToStack = true)
        {
            if (isSearchProcess)
            {
                return;
            }

            if (prevResults != null)
            {
                if (prevResults.Query == Query)
                {
                    return;
                }
            }

            VisualStateManager.GoToState(this, "Search", true);
            isSearchProcess = true;

            this.DefaultViewModel["Items"] = null;

            ObservableCollection <PictureSearchResult> results = await processSearch(Query);

            bool success = true;

            if (results != null)
            {
                VisualStateManager.GoToState(this, "Normal", true);
            }
            else
            {
                VisualStateManager.GoToState(this, "NotFound", true);
                success = false;
            }

            this.DefaultViewModel["Items"] = results;

            // Add query to back stack
            if (AddToStack && prevResults != null)
            {
                backStack.Add(prevResults);
                this.DefaultViewModel["CanGoBack"] = true;
            }

            prevResults           = new QuerySearchResults();
            prevResults.Query     = Query;
            prevResults.Results   = results;
            prevResults.IsSuccess = success;

            isSearchProcess = false;
        }
예제 #2
0
        /// <summary>
        /// Заполняет страницу содержимым, передаваемым в процессе навигации. Также предоставляется любое сохраненное состояние
        /// при повторном создании страницы из предыдущего сеанса.
        /// </summary>
        /// <param name="navigationParameter">Значение параметра, передаваемое
        /// <see cref="Frame.Navigate(Type, Object)"/> при первоначальном запросе этой страницы.
        /// </param>
        /// <param name="pageState">Словарь состояния, сохраненного данной страницей в ходе предыдущего
        /// сеанса. Это значение будет равно NULL при первом посещении страницы.</param>
        protected override void LoadState(Object navigationParameter, Dictionary <String, Object> pageState)
        {
            this.DefaultViewModel["CanGoBack"] = false;

            backStack       = new List <QuerySearchResults>();
            prevResults     = null;
            isSearchProcess = false;

            if (pageState == null)
            {
                this.DefaultViewModel["WordToSearch"] = ExampleSearchSource.RandomSearchExample;

                VisualStateManager.GoToState(this, "Start", true);
            }
            else
            {
                string prevSearch = (string)pageState["WordToSearch"];
                //this.DefaultViewModel["WordToSearch"] = prevSearch;
                //startSearch(prevSearch);
                SearchFor(prevSearch);
            }
        }
예제 #3
0
        protected override void GoBack(object sender, RoutedEventArgs e)
        {
            int lastIndex             = backStack.Count - 1;
            QuerySearchResults result = backStack[lastIndex];

            backStack.RemoveAt(lastIndex);

            if (backStack.Count == 0)
            {
                this.DefaultViewModel["CanGoBack"] = false;
            }

            this.DefaultViewModel["Items"]        = result.Results;
            this.DefaultViewModel["WordToSearch"] = result.Query;

            if (result.IsSuccess)
            {
                VisualStateManager.GoToState(this, "Normal", true);
            }
            else
            {
                VisualStateManager.GoToState(this, "NotFound", true);
            }
        }