是否可以将参数传递给 Xamarin.Forms 应用中的 DataTemplateSelector 构造函数



我正在开发一个Xamarin.Forms应用程序,该应用程序具有具有5个不同模板的列表视图。我正在尝试根据传递给构造函数的"模式"(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;
            }
        }
    }
}

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

例如

var listView = new ListView {
  ItemsSource = xxx,
  ItemTemplate = new CampaignCellSelector {
    CampaignTemplate = xxx,
    CrowdfundTemplate= xxx,
    PendingTemplate = xxx,
    NoCampaignTemplate = xxx,
    WelcomeTemplate = xxx,
    status = 1
    }
};

相关内容

  • 没有找到相关文章

最新更新