應用界面美化 - WPF Scheduler控件遷移指南

點擊獲取工具>>
在下載並安裝新的Scheduler Control後,技術團隊針對WPF的性能和開發範例對產品進行了優化。express

性能

下表有助於總結新的Scheduler與舊的Scheduler之間的區別,性能已經獲得了很大的提高。app

WPF界面開發工具DevExpress WPF使用教程

從提升的渲染速度到快速的滾動和記錄加載,新的WPF Scheduler在設計時考慮了最困難的性能用例。編輯器

100% WPF

與舊版本不一樣,新的WPF Scheduler 是爲了充分利用MVVM和WPF自定義(模板,樣式)而構建的。 開始使用新的Scheduler後,您會發現能夠徹底控制其視圖模型(單元格/約會選擇、約會編輯等),並使用標準WPF方法自定義控件。工具

如下遷移指南能夠幫助您將項目從較舊的項目遷移到新的Scheduler Control。性能

WPF界面開發工具DevExpress WPF使用教程

遷移指南

項目參數和命名空間:開發工具

刪除對DevExpress.Xpf.Scheduler.v17.2.dll程序集的引用,添加對DevExpress.Xpf.Scheduling.v17.2.dll程序集的引用。優化

spa

XAML設計

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

更改成

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 映射
  • 標籤和狀態標識映射分別命名爲LabelIdStatusId
  • 提醒映射命名爲Reminder,替代RemindferInfo

標籤和狀態能夠使用DataSource.AppointmentLabelsSourceDataSource.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集合:

最終用戶使用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.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對象的集合。

相關文章
相關標籤/搜索