如何根据用户的选择(选择器)刷新项目列表

时间:2017-07-18 16:12:04

标签: c# xamarin xamarin.forms

你好,我是xamarin表格的新手,我做了一些搜索,但没有找到多少。 我有一个页面上显示的项目列表,我想在用户从选择器中选择时刷新该列表。  例如,当用户从选择器中选择每月时,必须刷新列表并显示本月的项目我已经有3个函数functionDaily,functionMonthly,functionYearly返回ObservableCollection但我不知道如何刷新列表时如果有人可以帮助我,用户可以从选择器中选择谢谢

2 个答案:

答案 0 :(得分:3)

有两种方法可以做到:

使用

背后的代码

选择器有一个名为SelectedIndexChanged的事件,告诉您何时更改选择器的元素,当它引发时,您可以更新列表的来源,例如:

picker.SelectedIndexChanged += (sender, args) =>
{
    if (!picker.SelectedIndex == -1)
    {
        if(picker[picker.SelectedIndex] == "By Day")
          myList.ItemSource= functionDaily();   
        else if(picker[picker.SelectedIndex] == "By Month")
          myList.ItemSource= functionMonthly();     
       else if(picker[picker.SelectedIndex] == "By Year")
          myList.ItemSource= functionYearly();             

    }
};

使用ViewModel

几乎相同,只是不使用SelectedIndexChanged方法,您可以使用属性SelectedItem,创建属性并绑定到它,当属性更改时更新您的ItemSource(您的ItemSource)应该绑定到ViewModel上的List。

答案 1 :(得分:0)

我找到了答案,谢谢你们,如果有人在这里遇到同样的问题就是解决方案

    void Handle_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        picker = sender as Picker;
        if(picker.SelectedItem.Equals("Monthly")){
            ListActions.ItemsSource = am.GetMonthlyActionsByUserAndDate(CurrentUser.GetUser, DateTime.Now);

        }
        if(picker.SelectedItem.Equals("Yearly")){
            ListActions.ItemsSource = am.GetYearlyActionsByUserAndDate(CurrentUser.GetUser, DateTime.Now);
        }
        if (picker.SelectedItem.Equals("Daily"))
        {
            ListActions.ItemsSource = am.GetDailyActionsByUserAndDate(CurrentUser.GetUser, DateTime.Now);
        }



    }