Listview Y滚动位置

时间:2017-09-14 16:16:02

标签: listview xamarin.forms

有没有办法获得listview Y滚动位置?我的目标是在用户滚动列表视图时更改图像的TranslationY属性。我在使用scrollview之前已经实现了这个目标:

outerScrollView.Scrolled += (sender, e) => {
    var imageHeight = 800;
    var scrollRegion = layeringGrid.Height - outerScrollView.Height;
    var parallexRegion = imageHeight - outerScrollView.Height;
    var factor = outerScrollView.ScrollY - parallexRegion * (outerScrollView.ScrollY / scrollRegion);
    imagesCarousel.TranslationY = factor;
};

但是,listview不包含Scrolled事件。

提前致谢。

1 个答案:

答案 0 :(得分:0)

默认情况下,ListView具有滚动功能,不知道为什么ListView不包含Scrolled事件。

但是,一旦默认情况下ListView没有滚动,就必须创建一个滚动视图来覆盖XML中的ListView,如下所示:

<ScrollView x:Name="outerScrollView">
    <ListView 
        x:Name="ItemsListView"  
        ItemsSource="{Binding Messages}" 
        HasUnevenRows="True" 
        />
</ScrollView>

然后,一旦您进入事件e,则应使用e.ScrollY而不是externalScrollView.ScrollY

在上面的代码中实现它应该是这样的:

outerScrollView.Scrolled += (sender, e) => {
    var imageHeight = 800;
    var scrollRegion = layeringGrid.Height - e.Height;
    var parallexRegion = imageHeight - e.Height;
    var factor = e.ScrollY - parallexRegion * (e.ScrollY / scrollRegion);
    imagesCarousel.TranslationY = factor;
};

那就是您的滚动垂直位置!

如果这个答案对您有用,请别忘了接受并投票!!谢谢:)