private void _scrollViewer_DirectManipulationCompleted(object sender, object e)
        {
            _timer.Stop();

            if (ListViewRequestDataContext.IsPullDownRefreshStatus && this.IsShowPullDownRefresh && null != PullDownRefresh)
            {
                PullDownRefresh.Invoke(this, null);
                //执行刷新操作
            }

            ListViewRequestDataContext.IsPullDownRefreshStatus = false;
            //Debug.WriteLine("_scrollViewer_DirectManipulationCompleted");
        }
        private void _scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            //在 pc 上  //TODO:在能够区分 desktop and phone 的时候添加对pc端下拉刷新的支持
            if (null != PullDownRefresh && !_isHasDirectManipulationStarted && !ListViewRequestDataContext.IsPullDownRefreshStatus && !ListViewRequestDataContext.IsPullUpLoadMoreStatus)
            {
                var timeNow = DateTime.Now;

                //Debug.WriteLine("start:" + " Height=" + ScrollViewer.Height + " ActualHeight=" + ScrollViewer.ActualHeight + " ScrollableHeight=" + ScrollViewer.ScrollableHeight + " ExtentHeight=" + ScrollViewer.ExtentHeight + " VerticalOffset=" + ScrollViewer.VerticalOffset);
                if ((timeNow - _pullScrllTime).TotalSeconds < 0.3) //连续操作中
                {
                    //如果已经触发 且时间小于1.5秒内 则不操作
                    if (ListViewRequestDataContext.IsPullDownRefreshStatus && ((timeNow - _startedTime).TotalSeconds < 1.5))
                    {
                        return;
                    }

                    if (_startedOffset == -1) //第一次 update
                    {
                        _startedOffset = (int)ScrollViewer.VerticalOffset;
                        //Debug.WriteLine("_scrollViewer_ViewChanged 第一次 update " + " ScrollViewer.VerticalOffset=" + ScrollViewer.VerticalOffset);
                    }
                    else if (ScrollViewer.VerticalOffset < 0.5 && _startedOffset != 0) //满足置顶 条件 执行刷新 //这里发现手动滑动 有时候Voffset未必刚好为0 所以暂时做0.5的容错
                    {
                        //Debug.WriteLine("_scrollViewer_ViewChanged 满足置顶 条件 执行刷新update " + " ScrollViewer.VerticalOffset=" + ScrollViewer.VerticalOffset);
                        _startedOffset = -1;
                        _startedTime   = timeNow;
                        ListViewRequestDataContext.IsPullDownRefreshStatus = true;
                        PullDownRefresh.Invoke(this, null);
                    }
                }
                else //非连续操作 重置数据
                {
                    //Debug.WriteLine("_scrollViewer_ViewChanged 非连续操作 重置数据 " + " ScrollViewer.VerticalOffset=" + ScrollViewer.VerticalOffset);
                    _startedOffset = -1;
                    _startedTime   = timeNow;
                }
                _pullScrllTime = timeNow;
            }

            // Debug.WriteLine("end:" + " Height=" + ScrollViewer.Height + " ActualHeight=" + ScrollViewer.ActualHeight + " ScrollableHeight=" + ScrollViewer.ScrollableHeight + " ExtentHeight=" + ScrollViewer.ExtentHeight + " VerticalOffset=" + ScrollViewer.VerticalOffset);
        }