[UWP]内部滚动完成后滚动父视图 [英] [UWP]Scroll parent view when inner scroll is completed

查看:64
本文介绍了[UWP]内部滚动完成后滚动父视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们一直在开发UWP应用程序,其中我们有一个垂直滚动查看器,其中有许多元素,包括一个滚动视图。 

We have been developing UWP app wherein we have a vertical scrollviewer in which there is many elements including one scrollview. 

<ScrollView>
  <StackPanel />
  <StackPanel />
  <ScrollView />
</ScrollView>

两者都是垂直滚动视图。 

Both are vertical scroll views. 

当我们滚动内部scrollview时,它滚动到结束。没关系。但是,我们想要:当它结束时,它的父滚动视图应该开始滚动。目前,我必须使用scrolllview栏手动滚动其父级。如果内部滚动结束后父节点没有自动滚动
,则用户可能不知道内部滚动条中有更多元素,因为它们隐藏在屏幕高度以下。 请提供您的意见。任何帮助将不胜感激。

When we scroll in inner scrollview, it scroll till its end. It's OK. But, we want: When it ends, its parent scrollview should start scrolling. Currently, I have to manually scroll its parent using bars of scrolllview. If parent doesn't scroll automatically after inner scroll ends, user might not know that inner scroll has more elements in it as they get hidden below the screen height.  Please give your inputs. Any help will be appreciated.

谢谢。

推荐答案

您好,

我们可以使用内部  ScrollViewer   PointerEntered
和  ViewChanged 事件可实现此效果。当内部ScrollViewer 滚动到顶部或底部时,我们会将
内部  ScrollViewer ScrollMode 设为                    ; 已停用,
同时,当指针进入时,我们将内置的ScrollViewer  ScrollMode 设为已启用  的&的内&NBSP; 的ScrollViewer 即可。以下是
代码示例。

We can use the inner ScrollViewer's PointerEntered and ViewChanged event to achieve this effect. When the inner ScrollViewer scrolls to top or bottom, we make the inner ScrollViewer's ScrollMode be Disabled, meanwhile we make the inner ScrollViewer's ScrollMode be Enabled when the pointer enter into the inner ScrollViewer. The following is the code sample.

在xaml中,

    <ScrollViewer Name="OutScroll"  ScrollViewer.VerticalScrollBarVisibility="Visible">
        <StackPanel  Height="2000" Background="Green">
            <StackPanel  Height="300" Background="LightBlue"/>
            <StackPanel Height="300" Background="Blue"/>
            <ScrollViewer Name="InnerScroll"  Background="Red" Height="300" 
                          PointerEntered="PointerEnter"
                          ViewChanged="ViewChanged">
                <Rectangle Height="1000" Fill="Yellow"/>
            </ScrollViewer>
        </StackPanel>
    </ScrollViewer>

在后面的代码中,

       private void ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            if (InnerScroll.VerticalOffset == InnerScroll.ScrollableHeight)
            {
                InnerScroll.VerticalScrollMode = ScrollMode.Disabled;
               // ScrollViewer.SetVerticalScrollMode(InnerScroll, ScrollMode.Disabled);
            }else if(InnerScroll.VerticalOffset == 0)
            {
                InnerScroll.VerticalScrollMode = ScrollMode.Disabled;
               // ScrollViewer.SetVerticalScrollMode(InnerScroll, ScrollMode.Disabled);
            }    
        }


        private void PointerEnter(object sender, PointerRoutedEventArgs e)
        {
            InnerScroll.VerticalScrollMode = ScrollMode.Enabled;
           // ScrollViewer.SetVerticalScrollMode(InnerScroll, ScrollMode.Enabled);
        }

祝你好运,

Breeze


这篇关于[UWP]内部滚动完成后滚动父视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆