您可以将参数传递给Xamarin.Forms应用程序中的DataTemplateSelector构造函数吗?

时间:2019-04-04 21:47:33

标签: listview xamarin mobile xamarin.forms

我正在使用带有5个不同模板的ListView的Xamarin.Forms应用程序。我试图基于传递给构造函数的“模式”(int参数)设置模板的种类。运行程序时,出现错误

  

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

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

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

1 个答案:

答案 0 :(得分:1)

我认为您不需要定义一个包含参数的构造函数。您只需在创建列表视图时设置 status 的值即可。

例如

web: gunicorn main:ic