乐趣区

关于devexpress:应用界面美化-WPF-Scheduler控件迁移指南

点击获取工具 >>
在下载并装置新的 Scheduler Control 后,技术团队针对 WPF 的性能和开发范例对产品进行了优化。

性能

下表有助于总结新的 Scheduler 与旧的 Scheduler 之间的区别,性能曾经失去了很大的晋升。

从进步的渲染速度到疾速的滚动和记录加载,新的 WPF Scheduler 在设计时思考了最艰难的性能用例。

100% WPF

与旧版本不同,新的 WPF Scheduler 是为了充分利用 MVVM 和 WPF 自定义(模板,款式)而构建的。开始应用新的 Scheduler 后,您会发现能够齐全管制其视图模型(单元格 / 约会抉择、约会编辑等),并应用规范 WPF 办法自定义控件。

以下迁徙指南能够帮忙您将我的项目从较旧的我的项目迁徙到新的 Scheduler Control。

迁徙指南

我的项目参数和命名空间:

删除对 DevExpress.Xpf.Scheduler.v17.2.dll 程序集的援用,增加对 DevExpress.Xpf.Scheduling.v17.2.dll 程序集的援用。

XAML

xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduler"

更改为

XAML

xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduling"

在新的 Scheduler 中 Week view 相似于以前的 Full Week View,在新的 Scheduler 中,以前的 Week View 没有等效性能。

具备默认设置的所有视图类型都能够“开箱即用”,然而在在 XAML 中,您能够指定任意数量的具备不同类型和设置的视图。所有视图都蕴含在 SchedulerControl.Views 汇合中,激活视图由 SchedulerControl.ActiveViewIndex 属性指定。

Caption 属性容许最终用户确定在切换视图时单击哪个菜单项。

如以下代码示例所示,指定了视图属性:

XAML

`<dxsch:SchedulerControl>
<dxsch:DayView x:Name=”dayViewOne” Caption=”DayView One”
ResourcesPerPage=”5″
ShowAllDayArea=”False”
ShowWorkTimeOnly=”True”
SnapToCellsMode=”Never”
TimeScale=”00:10:00″ />
<dxsch:DayView x:Name=”dayViewTwo” Caption=”DayView Two”
ResourcesPerPage=”5″
ShowAllDayArea=”False”
ShowWorkTimeOnly=”True”
SnapToCellsMode=”Never”
TimeScale=”00:10:00″ />
<dxsch:WorkWeekView x:Name=”workWeekView” Caption=”My View”
ResourcesPerPage=”5″
ShowAllDayArea=”False”
ShowWorkTimeOnly=”True”
SnapToCellsMode=”Never”
TimeScale=”00:10:00″ />
<dxsch:WeekView x:Name=”weekView”
ResourcesPerPage=”5″
ShowAllDayArea=”False”
ShowWorkTimeOnly=”True”
SnapToCellsMode=”Never”
TimeScale=”00:10:00″ />
<dxsch:MonthView x:Name=”monthView”
WeekCount=”4″ />
</dxsch:SchedulerControl>
`

数据绑定:

应用 DataSource 对象代替 SchedulerStorage 对象进行数据绑定,应用规范 WPF 绑定将数据源绑定到 SchedulerControl,绑定的数据源须要 Appointment 和资源映射。

映射名称具备以下差别:

  • 必须提供 Id 映射
  • 标签和状态标识映射别离命名为 LabelId 和 StatusId
  • 揭示映射命名为 Reminder,代替 RemindferInfo

标签和状态能够应用 DataSource.AppointmentLabelsSource 和 DataSource.AppointmentStatusesSource 属性以与 Appointments 和 Resources 雷同的形式存储在数据源中并进行绑定。在这种状况下,须要标签和状态映射。

上面的代码示例演示 Scheduler,其调度和资源已绑定到数据上下文。该代码为 Note 字段指定了通用映射和自定义映射。

XAML

`<dxsch:SchedulerControl.DataSource>
<dxsch:DataSource AppointmentsSource=”{Binding Appointments}”
ResourcesSource=”{Binding Resources}”>
<dxsch:DataSource.AppointmentMappings>
<dxsch:AppointmentMappings Start=”StartTime”
End=”EndTime”
AllDay=”AllDay”
Subject=”Subject”
Id=”Id”
Description=”Description”
LabelId=”LabelId”
Location=”Location”
RecurrenceInfo=”RecurrenceInfo”
Reminder=”ReminderInfo”
ResourceId=”ResourceId”
StatusId=”StatusId”
TimeZoneId=”TimeZoneId”
Type=”Type”>
<dxsch:CustomFieldMapping Mapping=”Note” Name=”Note” />
</dxsch:AppointmentMappings>
</dxsch:DataSource.AppointmentMappings>
<dxsch:DataSource.ResourceMappings>
<dxsch:ResourceMappings Id=”Id”
Caption=”Caption” />
</dxsch:DataSource.ResourceMappings>
</dxsch:DataSource>
</dxsch:SchedulerControl.DataSource>`

Appointments:

AppointmentItem 类实例代表 Appointment 对象,应用以下成员能够拜访 AppointmentItem 汇合:

  • SchedulerControl.AppointmentItems,
  • SchedulerControl.GetAppointments(TimeInterval),
  • SchedulerControl.SelectedAppointments.

最终用户应用 in-place 编辑器或 appointment 编辑表单创立新的 appointment 时,将触发 SchedulerControl.InitNewAppointment 事件,您能够解决此事件以批改新创建的 appointment。

随后,SchedulerControl.AppointmentsUpdated 事件会触发,更改 appointment 时,将触发 SchedulerControl.AppointmentsUpdated 事件。您能够解决此事件,以将更改保留到内部数据源。然而它不提供无关已批改的 appointment 信息,更通用的事件是 SchedulerControl.ItemPropertyChangedevent,它批示属性更改以及约会、资源、状态和标签的更新。

要拜访选定 appointments 的源对象,请应用 SchedulerControl.SelectedAppointmentsSource 办法。应用 SchedulerControl.GetAppointmentItemBySourceObject 办法可通过其源对象获取 appointment。

定期 Recurring Appointments:

SchedulerControl.GetAppointments 办法返回指定工夫距离内的所有约会,包含呈现和异样。若要确定递归链距离,请别离应用 AppointmentItem.QueryStart 和 AppointmentItem.QueryEnd 属性。您能够通过将递归链指定为指定的递归模式的异样来为递归链调配任何约会。

资源:

ResourceItem 类实例代表 Resource 对象,可应用以下成员拜访 ResourceItem 汇合:

  • SchedulerControl.ResourceItems
  • SchedulerControl.VisibleResources

若要获取所选资源,请应用 SchedulerControl.SelectedResource 属性。应用 SchedulerControl.SelectedResourceSource 办法来拜访所选资源背地的源对象,要通过其源对象获取资源,请应用 SchedulerControl.GetResourceItemBySourceObject 办法。

资源不蕴含关联的图像,旧的 Scheduler 具备 Resource.ImageBytes 属性,该属性提供图片以显示在资源题目中。此时,您应该应用自定义字段来存储和获取图像,因而须要自定义字段映射。

若要在资源题目中显示图像(文本或任何控件),请创立一个自定义模板并将其调配给 ViewBase.ResourceHeaderContentTemplate 属性。此模板的 DataContext 是一个 ResourceHeaderViewModel 对象,该对象提供 Resource 和 Interval 属性。您能够在 Resource Header 数据模板内的绑定中应用这些属性。

Labels

AppointmentLabelItem 类实例示意约会的 Label 对象,能够应用 SchedulerControl.LabelItems 属性拜访标签的汇合。您能够应用与约会和资源数据雷同的形式将蕴含约会标签数据的数据源绑定到 DataSource.AppointmentLabelSource。

Statuses

AppointmentStatusItem 类实例代表约会的 Status 对象,应用 SchedulerControl.StatusItems 属性能够拜访状态汇合。您能够用与约会和资源数据雷同的形式将蕴含约会状态数据的数据源绑定到 DataSource.AppointmentStatusesSource。

Reminders

ReminderItem 类实例示意约会的揭示,其后辈 – RecurringReminderItem 类 – 揭示定期约会系列。能够应用 Appointment.Reminders 属性拜访特定约会的揭示汇合。若要创立揭示,请应用 AppointmentItem.CreateNewReminder 办法,HasReminder 属性不再可用。

SchedulerControl.CheckTriggeredReminders 办法立刻调用所有警报以进行过期约会,TriggeredReminder 对象援用了触发的揭示,该对象联合了 ReminderItem,相干的 AppointmentItem 和警报工夫。应用 SchedulerControl.TriggeredReminders 属性能够拜访 TriggeredReminder 对象的汇合。

退出移动版