Ejemplo n.º 1
0
        private async void Load_HTML(Uri uri)
        {
            (bool isSucceed, string result) = await DataHelper.GetHtmlAsync(uri, "XMLHttpRequest");

            if (isSucceed)
            {
                JObject o;
                try
                {
                    o = JObject.Parse(result);
                    MarkdownText.Text = CSStoMarkDown(o.TryGetValue("html", out JToken token) ? token.ToString() : o.TryGetValue("description", out JToken desc) ? desc.ToString() : "#网络错误");
                    TitleBar.Title    = o.TryGetValue("title", out JToken Title) ? Title.ToString() : null;
                }
                catch
                {
                    Frame.GoBack();
                    UIHelper.OpenLinkAsync(uri.ToString());
                }
            }
            else
            {
                Frame.GoBack();
            }
            TitleBar.HideProgressRing();
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            TitleBar.ShowProgressRing();
            FeedReplyList.ItemsSource = replys;

            var reply = e.Parameter as FeedReplyModel;

            TitleBar.Title      = $"回复({reply.Replynum})";
            id                  = reply.Id;
            reply.ShowreplyRows = false;
            replys.Add(reply);
            GetReplys(false);
            TitleBar.HideProgressRing();

            Task.Run(async() =>
            {
                await Task.Delay(200);
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    VScrollViewer              = VisualTree.FindDescendantByName(FeedReplyList, "ScrollViewer") as ScrollViewer;
                    VScrollViewer.ViewChanged += VScrollViewer_ViewChanged;
                });
            });
        }
        private async void GetReplys(bool isRefresh)
        {
            TitleBar.ShowProgressRing();
            int page  = isRefresh ? 1 : ++this.page;
            var array = (JArray)await DataHelper.GetDataAsync(DataUriType.GetReplyReplies, id, page, page > 1?$"&lastItem={lastItem}" : string.Empty);

            if (array != null && array.Count > 0)
            {
                if (isRefresh)
                {
                    VScrollViewer?.ChangeView(null, 0, null);
                    var d = (from a in replys
                             from b in array
                             where a.Id == b.Value <int>("id")
                             select a).ToArray();
                    foreach (var item in d)
                    {
                        replys.Remove(item);
                    }
                    for (int i = 0; i < array.Count; i++)
                    {
                        replys.Insert(i + 1, new FeedReplyModel((JObject)array[i]));
                    }
                }
                else
                {
                    foreach (JObject item in array)
                    {
                        replys.Add(new FeedReplyModel(item, false));
                    }
                    lastItem = array.Last.Value <int>("id");
                }
            }
            else if (!isRefresh)
            {
                this.page--;
            }
            TitleBar.HideProgressRing();
        }