请按照以下步骤来达到要求:
使用所需的属性创建自定义约会类。
然后请使用
SchedulerAppointmentMapping
将这些属性链接到 SchedulerAppointment
中的相关属性。
然后在自定义约会类中创建具有所有这些属性的约会。
最后使用“DataItem”属性将这些属性绑定到
AppointmentTemplate
。
请查找示例代码片段以供参考:
定制预约课程:
公共类事件:INotifyPropertyChanged {
private DateTime eventStartDateTime, eventEndDateTime;
private string name;
private Brush appointmentColor;
private string phoneNumber;
private string appointmentDetails;
public event PropertyChangedEventHandler PropertyChanged;
public DateTime EventStartDateTime
{
get { return eventStartDateTime; }
set
{
eventStartDateTime = value;
this.RaiseOnPropertyChanged(nameof(EventStartDateTime));
}
}
public DateTime EventEndDateTime
{
get { return eventEndDateTime; }
set
{
eventEndDateTime = value;
this.RaiseOnPropertyChanged(nameof(EventEndDateTime));
}
}
public string Name
{
get { return name; }
set
{
name = value;
this.RaiseOnPropertyChanged(nameof(Name));
}
}
public Brush AppointmentColor
{
get { return appointmentColor; }
set
{
appointmentColor = value;
this.RaiseOnPropertyChanged(nameof(AppointmentColor));
}
}
public string PhoneNumber
{
get { return phoneNumber; }
set
{
phoneNumber = value;
this.RaiseOnPropertyChanged(nameof(PhoneNumber));
}
}
public string AppointmentDetails
{
get { return appointmentDetails; }
set
{
appointmentDetails = value;
this.RaiseOnPropertyChanged(nameof(AppointmentDetails));
}
}
/// <summary>
/// Invoke method when property changed.
/// </summary>
/// <param name="propertyName">property name</param>
private void RaiseOnPropertyChanged(string propertyName)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
ViewModel 类:
公共类 BusinessObjectViewModel
{
#region Constructor
public BusinessObjectViewModel()
{
this.IntializeAppoitments();
}
#endregion Constructor
#region Properties
/// <summary>
/// Gets or sets appointments.
/// </summary>
public ObservableCollection<Event> Events { get; set; }
#endregion
#region Methods
/// <summary>
/// Method to initialize the appointments.
/// </summary>
private void IntializeAppoitments()
{
this.Events = new ObservableCollection<Event>();
var meeting = new Event();
**meeting.EventStartDateTime = DateTime.Now;**
**meeting.EventEndDateTime = DateTime.Now.AddHours(1);**
**meeting.Name = "Robert Fox";**
**meeting.PhoneNumber = "+447591441001";**
**meeting.AppointmentDetails = "Lorem ipsum dolor";**
**meeting.AppointmentColor = Brush.Purple;**
this.Events.Add(meeting);
}
#endregion
}
MainPage.xaml:
<DataTemplate x:Key="dayAppointmentTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<BoxView Background="Green" WidthRequest="4" Grid.Column="0"/>
<StackLayout Background="{Binding DataItem.AppointmentColor}" Grid.Column="1">
<Label **Text="{Binding DataItem.Name}"** TextColor="White" />
<Label **Text="{Binding DataItem.PhoneNumber}"** TextColor="White"/>
</StackLayout>
<StackLayout Background="{Binding DataItem.AppointmentColor}" Grid.Column="2">
<Label **Text="{Binding DataItem.AppointmentDetails}"** TextColor="White"/>
<Label **Text="{Binding DataItem.EventStartDateTime}"** TextColor="White"/>
</StackLayout>
</Grid>
</DataTemplate>
AppointmentsSource="{Binding Events}"
View="Day">
<scheduler:SfScheduler.DaysView>
<scheduler:SchedulerDaysView AppointmentTemplate="{StaticResource dayAppointmentTemplate}"/>
</scheduler:SfScheduler.DaysView>
**<scheduler:SfScheduler.AppointmentMapping>**
**<scheduler:SchedulerAppointmentMapping**
**StartTime="EventStartDateTime"**
**EndTime="EventEndDateTime"**
**Subject="Name"**
**Background="AppointmentColor"**
**Notes="AppointmentDetails"/>**
**</scheduler:SfScheduler.AppointmentMapping>**
<scheduler:SfScheduler.BindingContext>
<local:BusinessObjectViewModel />
</scheduler:SfScheduler.BindingContext>
这样,可以使用所需的所有属性创建自定义约会,并根据自定义模板将它们显示在调度程序中。