MAUI sfScheduler - 将 API 数据传入 Scheduler

问题描述 投票:0回答:1

我有一个 .Net MAUI 应用程序(目标平台以及 iOS 和 Win),我第一次尝试使用 SyncFusion Scheduler..

如果我对数据进行硬编码以从 ViewModel 返回并进入调度程序,那么一切都会正常工作。 但我正在努力弄清楚如何将从 API 返回的数据转换为 SchedulerAppointments。

XAML:

<scheduler:SfScheduler x:Name="calendar" View="Month" FirstDayOfWeek="Monday" AllowedViews="Week ,Month"   
                             TodayHighlightBrush="Gray" AppointmentsSource=" {Binding SchedulerEvents}" Tapped="calendar_Tapped" >

            <scheduler:SfScheduler.MonthView>
                <scheduler:SchedulerMonthView AppointmentDisplayMode="Indicator"  />
            </scheduler:SfScheduler.MonthView>

            <scheduler:SfScheduler.BindingContext >
                <local:SchedulerControlViewModel>
                    
                </local:SchedulerControlViewModel>
            </scheduler:SfScheduler.BindingContext>
</scheduler:SfScheduler>

查看型号:

using Syncfusion.Maui.Scheduler;
using System.Collections.ObjectModel;

namespace MyGolfSociety.ViewModels
{
    public class SchedulerControlViewModel
    {
        public ObservableCollection<SchedulerAppointment> SchedulerEvents { get; set; }
        public SchedulerControlViewModel()
        {

            this.SchedulerEvents = new ObservableCollection<SchedulerAppointment>
            {
                new SchedulerAppointment
                {

//我需要用 ObservableCollection 替换的硬编码数据

                    StartTime = new DateTime(2023, 8, 5,00,01,01),
                    EndTime = new DateTime(2023, 8, 5,23,01,01),
                    Subject = "TEST Appointment",
                    IsAllDay = true

                }
            };

        }
    }
}

活动模型:

namespace MyGolfSociety.Models
{
    public class Events
    {
        public int EventId { get; set; }

        public string? EventName { get; set; }

        public DateTime EventDateStart { get; set; }

        public DateTime? EventDateEnd { get; set; }

        public int? CourseId { get; set; }
    }
}

我返回了一个 Events 类型的 ObservableCollection(这是我的模型),但我不确定如何将 Observable 集合的内容转换或传递到 Schedule Appointment 中,而不只是删除集合。当然,必须有一个更好的更有效的方法..?

c# maui syncfusion
1个回答
0
投票

正如 Jason 建议的那样,您可能需要使用 AppointmentMapping 属性来映射 Model:

Events
类的这些属性,如下所示:

<scheduler:SfScheduler  x:Name="calendar" 
                        View="Month" 
                        FirstDayOfWeek="Monday" 
                        AllowedViews="Week ,Month"   
                        TodayHighlightBrush="Gray" 
                        AppointmentsSource=" {Binding SchedulerEvents}" 
                        Tapped="calendar_Tapped" >
    <scheduler:SfScheduler.AppointmentMapping>
        <scheduler:SchedulerAppointmentMapping
                Subject="TEST Appointment"
                StartTime="EventDateStart"
                EndTime="EventDateEnd"
                IsAllDay="IsAllDay"
                Id="EventId" />
    </scheduler:SfScheduler.AppointmentMapping>

     <scheduler:SfScheduler.MonthView>
           <scheduler:SchedulerMonthView AppointmentDisplayMode="Indicator"/>
     </scheduler:SfScheduler.MonthView>

      <scheduler:SfScheduler.BindingContext >
                <local:SchedulerControlViewModel>   
                </local:SchedulerControlViewModel>
      </scheduler:SfScheduler.BindingContext>
</scheduler:SfScheduler>

© www.soinside.com 2019 - 2024. All rights reserved.