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