首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

指尖离开屏幕时scrollviewer内容弹回

2013-10-03 
手指离开屏幕时scrollviewer内容弹回当手指拖动scrollviewer时 里面的内容随着手指一起移动 但是当手指从

手指离开屏幕时scrollviewer内容弹回
当手指拖动scrollviewer时 里面的内容随着手指一起移动 但是当手指从屏幕上放开时 scrollviewer里的内容又弹回去了 
于是我自己做了一个空页面 放scrollviewer 拖动却是正常的 手指离开屏幕时不会弹回
还有我在研究这个问题的时候发现还有个ScrollContentPresenter控件 说明上说是给scrollviewer 提供内容的
为什么要有这个控件呢  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);   
              }
        }

热点排行