Listview 能否将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数?
我正在开发一个Xamarin.Forms应用程序,它有一个包含5个不同模板的列表视图。我试图根据传递给构造函数的int参数的模式设置模板的类型。当我运行程序时,我得到一个错误 缺少“ActivityCellSelector”的默认构造函数 我的问题是:是否可以将参数传递给DataTempalteSelector?如果没有,我应该采取什么方法?我已经在下面发布了我的代码Listview 能否将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数?,listview,xamarin,mobile,xamarin.forms,Listview,Xamarin,Mobile,Xamarin.forms,我正在开发一个Xamarin.Forms应用程序,它有一个包含5个不同模板的列表视图。我试图根据传递给构造函数的int参数的模式设置模板的类型。当我运行程序时,我得到一个错误 缺少“ActivityCellSelector”的默认构造函数 我的问题是:是否可以将参数传递给DataTempalteSelector?如果没有,我应该采取什么方法?我已经在下面发布了我的代码 public class CampaignCellSelector : DataTemplateSelector {
public class CampaignCellSelector : DataTemplateSelector
{
public DataTemplate CampaignTemplate { get; set; }
public DataTemplate CrowdfundTemplate { get; set; }
public DataTemplate PendingTemplate { get; set; }
public DataTemplate NoCampaignTemplate { get; set; }
public DataTemplate WelcomeTemplate { get; set; }
public int status { get; set; }
public CampaignCellSelector(int mode)
{
status = mode;
}
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
if (status == 0)
{
return PendingTemplate;
}
else if (status == 1)
{
return NoCampaignTemplate;
}
else if (status == 2)
{
return WelcomeTemplate;
}
else
{
if (((Campaign)item).startDate == "")
{
//Console.WriteLine("point AA");
return CampaignTemplate;
}
else
{
//Console.WriteLine("point BB");
return CrowdfundTemplate;
}
}
}
}
我认为不需要定义包含参数的构造函数,只需要在创建listview时设置status的值 比如说
var listView = new ListView {
ItemsSource = xxx,
ItemTemplate = new CampaignCellSelector {
CampaignTemplate = xxx,
CrowdfundTemplate= xxx,
PendingTemplate = xxx,
NoCampaignTemplate = xxx,
WelcomeTemplate = xxx,
status = 1
}
};