【发布时间】:2020-09-27 04:51:24
【问题描述】:
我有一个由自定义渲染器组成的 ListView。我希望用户在进入页面时滚动到 ListView 的底部。
由于我的内容已绑定,似乎 OnAppearing 被触发得太早(在我的 ListView 加载之前)。如何在正确的时间触发 ScrollToLast()?
protected override void OnAppearing()
{
base.OnAppearing();
this.ItemsListView.ScrollToLast();
}
public class CustomListView : ListView
{
public CustomListView() : this(ListViewCachingStrategy.RecycleElement)
{
ScrollToLast();
}
public CustomListView(ListViewCachingStrategy cachingStrategy)
: base(cachingStrategy)
{
}
public void ScrollToLast()
{
try
{
if (ItemsSource != null && ItemsSource.Cast<object>().Count() > 0)
{
var lastItem = ItemsSource.Cast<object>().LastOrDefault();
if (lastItem != null)
{
ScrollTo(lastItem, ScrollToPosition.End, false);
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
}
【问题讨论】:
-
绑定没关系。您可以在绑定值的设置器中调用该方法。另一种情况是,您可以跟踪值更改的属性,这样您就可以通过事件处理程序调用它。
标签: listview xamarin.forms custom-renderer