【问题标题】:What the event for the scrollviewer scroll to top and continue scroll in windows phone?scrollviewer 滚动到顶部并继续在 windows phone 中滚动的事件是什么?
【发布时间】:2014-10-16 06:23:37
【问题描述】:

在桌面应用程序中,当我们将列表滚动到顶部时,通常我们无法再滚动。但是在手机中,我们将列表拖到顶部并继续拖动,会出现一些空白。就像下面的例子。

当用户正常滚动列表时,我可以订阅 ViewChanged 事件以知道列表正在滚动。但是列表滚动到顶部并继续滚动后,scrollviewer的垂直偏移量已经为0并且不会改变,也不会触发ViewChanged事件。

我的问题是有什么方法可以知道列表被拖到顶部并继续拖动?

我的目标平台是 windows phone 8.1 和我的示例代码:

<Grid>
    <Frame >
        <Grid>
            <ScrollViewer x:Name="TopViewer">
                <StackPanel >
                    <Grid Background="Blue" Height="10"/>
                    <local:CustomListView x:Name="List" 
                                          Background="LightBlue">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock FontSize="15" Foreground="Black" Text="{Binding}"/>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </local:CustomListView>
                </StackPanel>
            </ScrollViewer>
        </Grid>
    </Frame>
</Grid>

xaml.cs

        List<string> l = new List<string>();
        Random r = new Random();
        for (int i = 0; i < 30; i++)
        {
            l.Add(r.Next().ToString());
        }
        List.ItemsSource = l;

【问题讨论】:

  • 确保我理解您的问题。当您滚动到顶部时,您可以进一步滚动吗?当你拿掉触摸屏的手指时会发生什么?列表是否保留或是否正在调整自身以使第一项再次位于顶部? (所以不留空隙)
  • @Stephan 列表滚动到顶部后,我可以再滚动一点,当我松开手指时,列表会再次回到顶部。
  • 好的,那么这是由 Windows Phone(以及 Windows 8)设计的。它是 UI 的一个设计元素,以便用户了解您实际上是最重要的,没有什么可看的了。所以这实际上是在框架中实现的,你将无法改变它。您的代码没有问题。

标签: .net wpf xaml windows-phone windows-phone-8.1


【解决方案1】:

这是由 Windows Phone(以及 Windows 8)设计的。它是 UI 的一个设计元素,以便用户了解您实际上是最重要的,没有什么可看的了。所以这实际上是在框架中实现的,你将无法改变它。这与您的代码无关。

【讨论】:

  • 我不想改,我只需要知道列表什么时候被拖到顶部。
  • 啊,我明白了。您基本上是在搜索由于列表上的“拉动刷新”操作而被触发的事件,对吧? ListView 不提供此功能。我只有一些商业控件,例如 Telerik 的 WP 控件和提供此功能的 DataBoundList 控件。也许这 link 也有帮助,但它仅适用于 Windows Phone 8.0(因此是 Silverlight)。不确定它是否也适用于 Universal。
  • 感谢您的回复。是的,我想知道由于“pull-to-refresh”而导致的事件,但我需要做一些除刷新之外的其他操作。我检查了您提供的链接,它基于 LongListSelector 控件,该控件已在 WP 8.1 中删除。 Telerik WP 控件也适用于 WP 8.0。
  • 我不确定通用应用程序,但 WP8 中有一个 ScrollStates VisualStateGroup 供滚动查看器实现您的目标。更多信息:blogs.msdn.com/b/slmperf/archive/2011/06/30/…也许有一些替代品,看看通用滚动查看器默认样式。
  • 搜索其他一些功能时我偶然发现了 Krempel 的 WP7 库。根据link,它提供了对下拉刷新面板的支持。我没有测试它,但当我读到这篇文章时,你的问题立即浮现在我的脑海中。也许你想试试看。
猜你喜欢
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多