Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据用户(选取者)的选择刷新项目列表_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如何根据用户(选取者)的选择刷新项目列表

C# 如何根据用户(选取者)的选择刷新项目列表,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,你好,我是xamarin表单的新手,我做了一些搜索,但没有找到多少。 我有一个显示在页面上的项目列表,我想在用户从选择器中选择时刷新该列表。 例如,当用户从选择器中选择monthly时,必须刷新列表并显示本月的项目。我已经有3个功能functionDaily、functionMonthly、,返回ObservableCollection的函数,但我不知道当用户从选择器中选择时如何刷新列表,如果有人可以帮助我,谢谢有两种方法: 使用代码隐藏 选择器有一个名为SelectedIndexChanged

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

使用代码隐藏 选择器有一个名为
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上的列表)。

有两种方法:

使用代码隐藏 选择器有一个名为
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上的列表).

我找到了答案谢谢大家如果有人面临同样的问题这里是解决方案

    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);
        }



    }

我找到了答案谢谢大家如果有人面临同样的问题这里是解决办法

    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);
        }



    }

要用不同的数据刷新ListView,只需重新分配其ItemSource属性要用不同的数据刷新ListView,只需重新分配其ItemSource属性