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
Listview 能否将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数?_Listview_Xamarin_Mobile_Xamarin.forms - Fatal编程技术网

Listview 能否将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数?

Listview 能否将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数?,listview,xamarin,mobile,xamarin.forms,Listview,Xamarin,Mobile,Xamarin.forms,我正在开发一个Xamarin.Forms应用程序,它有一个包含5个不同模板的列表视图。我试图根据传递给构造函数的int参数的模式设置模板的类型。当我运行程序时,我得到一个错误 缺少“ActivityCellSelector”的默认构造函数 我的问题是:是否可以将参数传递给DataTempalteSelector?如果没有,我应该采取什么方法?我已经在下面发布了我的代码 public class CampaignCellSelector : DataTemplateSelector {

我正在开发一个Xamarin.Forms应用程序,它有一个包含5个不同模板的列表视图。我试图根据传递给构造函数的int参数的模式设置模板的类型。当我运行程序时,我得到一个错误

缺少“ActivityCellSelector”的默认构造函数

我的问题是:是否可以将参数传递给DataTempalteSelector?如果没有,我应该采取什么方法?我已经在下面发布了我的代码

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