【发布时间】: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