Можете ли вы передать параметры конструкторам DataTemplateSelector в приложении Xamarin.Forms? - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над приложением Xamarin.Forms с ListView с 5 различными шаблонами. Я пытаюсь установить тип шаблона на основе «mode» (параметр 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 Ответ

1 голос
/ 05 апреля 2019

Я не думаю, что вам нужно определять конструктор, который содержит параметры. Вам просто нужно установить значение status при создании списка.

Например

var listView = new ListView {
  ItemsSource = xxx,
  ItemTemplate = new CampaignCellSelector {
    CampaignTemplate = xxx,
    CrowdfundTemplate= xxx,
    PendingTemplate = xxx,
    NoCampaignTemplate = xxx,
    WelcomeTemplate = xxx,
    status = 1
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...