Xamarin.forms Xamarin表单:如何在XamForms.Controls.Calendar specialdate上添加点击事件?

Xamarin.forms Xamarin表单:如何在XamForms.Controls.Calendar specialdate上添加点击事件?,xamarin.forms,Xamarin.forms,我正在使用XamForms.Controls.Calendar包在项目中显示日历。我用下面的代码在日历上标记事件 private void AddSpecialDateWithList(List<events> list) { List<SpecialDate> newList = new List<SpecialDate>(); foreach (events model in list) { string start

我正在使用XamForms.Controls.Calendar包在项目中显示日历。我用下面的代码在日历上标记事件

private void AddSpecialDateWithList(List<events> list)
{
    List<SpecialDate> newList = new List<SpecialDate>();
    foreach (events model in list)
    {
        string startDate = model.start;
        int startIndex = startDate.IndexOf('T');
        if (startIndex > 0)
        {
            startDate = startDate.Substring(0, startIndex);
        }

        string endDate = model.end;
        int endIndex = endDate.IndexOf('T');
        if (endIndex > 0)
        {
            endDate = endDate.Substring(0, endIndex);
        }
        List<DateTime> dates = GetDatesBetween(DateTime.Parse(startDate), DateTime.Parse(endDate));
        for(int i=0;i< dates.Count; i++)
        {
            var newDate = AddDate(dates[i], model);
            newList.Add(newDate);
        }
    }
    calendar.SpecialDates = newList;
}

private SpecialDate AddDate(DateTime dateTime, events model)
{
    SpecialDate newDate = new SpecialDate(dateTime)
    {
        Selectable = true,
        BackgroundPattern = new BackgroundPattern(1)
        {
            Pattern = new List<Pattern>
            {
                new Pattern { WidthPercent = 1f, HightPercent = 0.7f, Color = Color.White },
                new Pattern{ WidthPercent = 1f, HightPercent = 0.3f, Color = Color.Yellow, Text = model.title, TextColor=Color.Black, TextSize=10, TextAlign=TextAlign.LeftCenter},
            }
        }
    };
    return newDate;
}
截图:


当我点击“有活动的一天”或“有数学作业的一天”时,我需要获取事件id以及与该事件相关的所有其他详细信息。我怎样做这个功能?还可以在XamForms.Controls.Calendar中显示月、周和日视图吗?

您可以在单击的事件日期列表中获得SpecialDate的索引


这里的列表[num]是什么?项目中的列表可以在XamForms.Controls.Calendar中显示月、周和日视图吗?找到一个名为EnableTitleMonthYearView的属性,这有什么用?我不熟悉该插件,您可以试试。
private void calendar_DateClicked(object sender, DateTimeEventArgs e)
{
    int num = 0;

    var specialList = calendar.SpecialDates;
    var date = e.DateTime;

    foreach(SpecialDate specialDate in specialList)
    {
        if(specialDate.Date.Year==date.Year&& specialDate.Date.Month == date.Month&&specialDate.Date.Day == date.Day)
        {
            events model = list[num];
            // do something you want 
        }
        else
        {
            num++;
        }
    }
}