我有一个 .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 中,而不只是删除集合。当然,必须有一个更好的更有效的方法..?
正如 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>