OptionsCustomization Class
Provides customization options for the Scheduler control.
Namespace: DevExpress.Xpf.Scheduler
Assembly:
DevExpress.Xpf.Scheduler.v22.2.dll
NuGet Package:
DevExpress.Wpf.Scheduler
Declaration
public class OptionsCustomization :
SchedulerOptionsBase<SchedulerOptionsCustomization>
Public Class OptionsCustomization
Inherits SchedulerOptionsBase(Of SchedulerOptionsCustomization)
The following members return OptionsCustomization objects:
Important
You are viewing documentation for the legacy WPF Scheduler control. If you’re starting a new project, we strongly recommend that you use a new control declared in the DevExpress.Xpf.Scheduling namespace. If you decide to upgrade an existing project in order to switch to the updated scheduler control, see the Migration Guidelines document.
The OptionsCustomization class provides a set of properties that control which parts of the Scheduler control’s functionality are available to end-users. An instance of this class can be accessed via the control’s SchedulerControl.OptionsCustomization property.
Example
This example demonstrates how to prevent end-users from having appointments within a certain time interval (from 2 PM to 3 PM). To implement end-user restrictions, handle the SchedulerControl.AllowAppointmentCreate event to prevent end-users from creating appointments within a certain time interval and the SchedulerControl.AllowAppointmentConflicts event to prevent an existing appointment from being dragged to the same time interval:
View Example
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduler"
Title="MainWindow" Height="350" Width="525">
<Grid>
<dxsch:SchedulerControl Name="schedulerControl1"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AllowAppointmentConflicts="schedulerControl1_AllowAppointmentConflicts"
AllowAppointmentCreate="schedulerControl1_AllowAppointmentCreate">
<dxsch:SchedulerControl.DayView>
<dxsch:DayView DayCount="3" />
</dxsch:SchedulerControl.DayView>
<dxsch:SchedulerControl.OptionsCustomization>
<dxsch:OptionsCustomization AllowAppointmentConflicts="Custom" AllowAppointmentCreate="Custom" />
</dxsch:SchedulerControl.OptionsCustomization>
</dxsch:SchedulerControl>
</Grid>
</Window>
using System;
using System.Windows;
using DevExpress.XtraScheduler;
using DevExpress.Xpf.Scheduler;
namespace WpfApplication1 {
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
TimeOfDayInterval restrictedArea =
new TimeOfDayInterval(TimeSpan.FromHours(14), TimeSpan.FromHours(15));
private void schedulerControl1_AllowAppointmentConflicts(object sender,
AppointmentConflictEventArgs e) {
TimeInterval interval = e.Interval;
if (!IsIntervalAllowed(interval))
e.Conflicts.Add(e.AppointmentClone);
}
private void schedulerControl1_AllowAppointmentCreate(object sender,
AppointmentOperationEventArgs e) {
e.Allow = IsIntervalAllowed(schedulerControl1.ActiveView.SelectedInterval);
}
private bool IsIntervalAllowed(TimeInterval interval) {
DateTime dayStart = interval.Start.Date;
while (dayStart < interval.End) {
if (!IsIntervalAllowed(interval, dayStart))
return false;
dayStart = dayStart.AddDays(1);
}
return true;
}
bool IsIntervalAllowed(TimeInterval interval, DateTime dayStart) {
TimeInterval lunchTime = new TimeInterval(dayStart.Add(restrictedArea.Start),
dayStart.Add(restrictedArea.End));
return !interval.IntersectsWithExcludingBounds(lunchTime);
}
}
}
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduler"
Title="MainWindow" Height="350" Width="525">
<Grid>
<dxsch:SchedulerControl Name="schedulerControl1"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AllowAppointmentConflicts="schedulerControl1_AllowAppointmentConflicts"
AllowAppointmentCreate="schedulerControl1_AllowAppointmentCreate">
<dxsch:SchedulerControl.DayView>
<dxsch:DayView DayCount="3" />
</dxsch:SchedulerControl.DayView>
<dxsch:SchedulerControl.OptionsCustomization>
<dxsch:OptionsCustomization AllowAppointmentConflicts="Custom" AllowAppointmentCreate="Custom" />
</dxsch:SchedulerControl.OptionsCustomization>
</dxsch:SchedulerControl>
</Grid>
</Window>
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports DevExpress.XtraScheduler
Imports DevExpress.Xpf.Scheduler
Namespace WpfApplication1
Partial Public Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private restrictedArea As New TimeOfDayInterval(TimeSpan.FromHours(14), TimeSpan.FromHours(15))
Private Sub schedulerControl1_AllowAppointmentConflicts(ByVal sender As Object, _
ByVal e As AppointmentConflictEventArgs)
Dim interval As TimeInterval = e.Interval
If (Not IsIntervalAllowed(interval)) Then
e.Conflicts.Add(e.AppointmentClone)
End If
End Sub
Private Sub schedulerControl1_AllowAppointmentCreate(ByVal sender As Object, _
ByVal e As AppointmentOperationEventArgs)
e.Allow = IsIntervalAllowed(schedulerControl1.ActiveView.SelectedInterval)
End Sub
Private Function IsIntervalAllowed(ByVal interval As TimeInterval) As Boolean
Dim dayStart As DateTime = interval.Start.Date
Do While dayStart < interval.End
If (Not IsIntervalAllowed(interval, dayStart)) Then
Return False
End If
dayStart = dayStart.AddDays(1)
Loop
Return True
End Function
Private Function IsIntervalAllowed(ByVal interval As TimeInterval, _
ByVal dayStart As DateTime) As Boolean
Dim lunchTime As New TimeInterval(dayStart.Add(restrictedArea.Start), _
dayStart.Add(restrictedArea.End))
Return Not interval.IntersectsWithExcludingBounds(lunchTime)
End Function
End Class
End Namespace
The following code snippets (auto-collected from DevExpress Examples) contain references to the OptionsCustomization class.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.
See Also