手指离开屏幕时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);
}
}