如何通过在应用程序内使用日历控件在 Xamarin.Forms 中添加 activity(Appointments, Tasks)?

How to add activity(Appointments, Tasks) in Xamarin.Forms by using calendar control inside applicatoin?

我正在创建一个应用程序,因为需要在特定页面或块内显示日历,并且在日历内显示特定的 activity 日期,例如 4 月 27 日,它显示第 4 个星期六依此类推取决于 运行 时间。

我正在使用 .Net 标准 2.0 并尝试使用 XamForms.Controls.Calendar 进行制作,但它对我不起作用。

我需要使用免费插件和完整的 .Net 标准支持来实现日历。

任何人都可以调查一下并建议我应该更改代码或配置吗?

如果你只是想在特定的日期显示特定的activity,你可以在XamForms.Controls.Calendar中使用SpecialDate来实现,我设置了FontSize = 0日期不可见并设置 Selectable = false 以禁用 select 操作:

    public MainPage()
    {
        InitializeComponent();

        Calendar calendar = new Calendar
        {
            MaxDate = DateTime.Now.AddDays(30),
            MinDate = DateTime.Now.AddDays(-1),
            MultiSelectDates = false,
            DisableAllDates = false,
            WeekdaysShow = true,
            ShowNumberOfWeek = true,

            ShowNumOfMonths = 1,
            EnableTitleMonthYearView = true,
            WeekdaysTextColor = Color.Teal,
            StartDay = DayOfWeek.Monday,
            SelectedTextColor = Color.Fuchsia,
            SpecialDates = new List<SpecialDate>{
                new SpecialDate(DateTime.Now.AddDays(2))
                {
                    BackgroundColor = Color.White,
                    TextColor = Color.White,

                    Selectable = false,
                    FontSize = 0,

                    BackgroundPattern = new BackgroundPattern(1)
                    {
                        Pattern = new List<Pattern>
                        {
                            new Pattern{ WidthPercent = 1f, HightPercent = 1f, Color = Color.White,Text = "4th Saturday", TextColor=Color.DarkBlue, TextSize=8, TextAlign=TextAlign.Middle}
                        }
                    }
                }
            }
        };

        Content = new ScrollView
        {
            Content = new StackLayout
            {
                Padding = new Thickness(5, Device.RuntimePlatform == Device.iOS ? 25 : 5, 5, 5),
                Children = {
                        calendar//,c2
                    }
            }
        };        

    }

结果如下:

如果要显示所有的星期六,你应该自己计算日期并将日期作为参数传递给DateTime.Now.AddDays(2)