当前位置: 代码迷 >> Windows Mobile >> 手指头离开屏幕时scrollviewer内容弹回
  详细解决方案

手指头离开屏幕时scrollviewer内容弹回

热度:91   发布时间:2016-04-25 07:15:39.0
手指离开屏幕时scrollviewer内容弹回
当手指拖动scrollviewer时 里面的内容随着手指一起移动 但是当手指从屏幕上放开时 scrollviewer里的内容又弹回去了 
于是我自己做了一个空页面 放scrollviewer 拖动却是正常的 手指离开屏幕时不会弹回
还有我在研究这个问题的时候发现还有个ScrollContentPresenter控件 说明上说是给scrollviewer 提供内容的
为什么要有这个控件呢 
------解决方案--------------------
你需要给scrollviewer一个高度。
------解决方案--------------------
是的,给scrollviewer一个高度。 
------解决方案--------------------
1.如果需求是 手指离开就要弹回去,可以写在_ManipulationCompleted事件中,将scrollviewer d VerticalOffset 设为0
scrollView.ScrollToVerticalOffset(0);
2.如果需求是 滚动停止时,弹回去,可以去扑捉滚动状态改变事件
FrameworkElement element = VisualTreeHelper.GetChild(scrollView, 0) as FrameworkElement;
                if (element != null)
                {
                    VisualStateGroup visualStateGroup = FindVisualState(element, "ScrollStates");
                    visualStateGroup.CurrentStateChanged += visualStateGroup_CurrentStateChanged;
                }

       private VisualStateGroup FindVisualState(FrameworkElement element, string name)
        {
            if (element == null)
                return null;

            IList groups = VisualStateManager.GetVisualStateGroups(element);
            foreach (VisualStateGroup group in groups)
            {
                if (group.Name == name)
                {
                    return group;
                }
            }
            return null;
        }

当状态为停止时 去设scrollView的VerticalOffSet
        private void visualStateGroup_CurrentStateChanged(object sender, VisualStateChangedEventArgs e)
        {
              var visualState = e.NewState.Name;
              if (visualState == "NotScrolling")
              {
                  scrollView.ScrollToVerticalOffset(0);   
              }
        }
  相关解决方案