gpt4 book ai didi

xamarin.forms - 如何检测xamarin表单中的 ListView 滚动方向

转载 作者:行者123 更新时间:2023-12-04 01:39:00 24 4
gpt4 key购买 nike

我尝试检测 ListView 的滚动方向。我的要求是需要在 ListView 向上滚动和向下滚动时实现不同的功能。请提出任何检测 ListView 滚动方向的想法。我在 ListView 中尝试了以下语法。

示例代码:

 <StackLayout>
<Label x:Name="Direction" />
<ListView ItemsSource="{Binding Items}" HasUnevenRows = "true" ItemAppearing="Handle_ItemAppearing" IsPullToRefreshEnabled = "true">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text = "{Binding}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>

最佳答案

我认为默认情况下你不能这样做,你只能对正在出现或消失的项目进行操作。因此,您要么需要创建一些代码来获取(不)出现的项目的索引,然后查看索引是否变高或​​变低,以确定某人是向上还是向下滚动。或者您需要连接一个自定义渲染器,但我不确定 native 控件是否有任何东西可以检测到这一点。

我为您准备了一个非常基本的示例,您可以找到 full code here .

基本上 Hook 可用的事件,跟踪类变量中的最后一个索引并将其与出现的项目的当前索引进行比较。

private void Handle_ItemAppearing (object sender, Xamarin.Forms.ItemVisibilityEventArgs e)
{
var currentIdx = Items.IndexOf ((string)e.Item);

if (currentIdx > _lastItemAppearedIdx)
Direction.Text = "Up";
else
Direction.Text = "Down";

_lastItemAppearedIdx = Items.IndexOf ((string)e.Item);
}

在此代码中,我只是将其显示在 Label 中,但当然您可以创建一些枚举来返回或触发事件或使代码更可重用。这是正在运行的代码:

Sample on iOS Simulator

关于xamarin.forms - 如何检测xamarin表单中的 ListView 滚动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44016669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com