【问题标题】:load more items in Listview from ViewModel in xamarin forms从 xamarin 表单中的 ViewModel 在 Listview 中加载更多项目
【发布时间】:2020-12-21 14:31:57
【问题描述】:

如何从 ViewModel 加载 Listview 中的更多项目?

代码实现:

listview.ItemAppearing += (sender, e) => 
        {
            if(isLoading || Items.Count == 0)
                return;

            //hit bottom!
            if(e.Item.ToString() == Items[Items.Count - 1])
            {
                LoadItems();
            }
        };

在我的 xaml.cs 中

但需要在我的 ViewModel 中做同样的事情...

【问题讨论】:

  • 较新的 CollectionView 具有内置的“加载更多”支持,通常建议在(旧的)ListView 上使用。
  • 你能在你调用 listview.ItemAppearing 的地方获得 ViewModel 实例吗?如果是这样,您可以在 listview.ItemAppearing 中调用 vm.loadMore()。

标签: ios listview xamarin.forms


【解决方案1】:

尝试以下操作,如果您需要更多帮助,请告诉我。

我使用MessagingCenter来实现它。

  1. 在您的 xaml.cs 文件中添加此内容
public partial class Results : ContentPage
    {
        public Results()
        {
            InitializeComponent();
            NavigationPage.SetBackButtonTitle(this, "");
            listview.ItemAppearing += (object s, ItemVisibilityEventArgs e) => 
            {
                MessagingCenter.Send(this, "Search:LastResultShown", e);
            };
        }
    }
  1. 现在在您的 ViewModel 中订阅您的 MessagingCenter 并记得取消订阅。
public class ResultsVM : ViewModelBase
{
    public ResultsVM() : base()
    {
            MessagingCenter.Subscribe<Results, ItemVisibilityEventArgs>(this, "Search:LastResultShown", OnItemAppearing);
    }

    public override void CleanupPage()
    {
        base.CleanupPage();
        MessagingCenter.Unsubscribe<Results, ItemVisibilityEventArgs>(this, "Search:LastResultShown");
    }

    private async void OnItemAppearing(object sender, ItemVisibilityEventArgs e)
    {
         //Here will be your code
           if ( ResultsList.Count == 0 || e == null || e.Item == null ) { return; }
            var lastItem = ResultsList.ElementAtOrDefault(ResultsList.Count - 1);
            if ( lastItem != null && e.Item == lastItem ) { LoadNextItems(); }
         
    }
}

OnItemAppearing 将在您的列表出现在屏幕末尾时点击。

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 2021-09-17
    • 2021-10-20
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多