Building Microsoft® Office® Inspired apps is a snap with DXperience 12.2. From Reporting Controls, Data Grids and Tree Lists to Schedulers, Ribbons and App Skins, the DXperience 12.2 offers a complete set of user interface controls to get you from A to Z in no time.
Let me introduce you to the products by building (together with you), a real-world project management app. We’ll start with the Gantt View of the XtraScheduler, Ribbon and a Data Grid. The end result will be a fully functional, albeit simple, project management app with a slick Windows® 8 style user interface:

Database Schema
Let’s start of by defining the the data structures that we’re going to need. We’ll use the Microsoft® SQL Server as our back end. This is where all our appointments and tasks will be stored.
Fire up the SQL Server Management Studio and create a new database: “DXProjectManager”

We need tree tables: Appointments, Resources and TaskDependencies. See Gantt View DDL specification for more details.
CREATE TABLE [dbo].[Appointments] (
[UniqueId] [int] IDENTITY (1, 1) NOT NULL ,
[Type] [int] NULL ,
[StartDate] [smalldatetime] NULL ,
[EndDate] [smalldatetime] NULL ,
[AllDay] [bit] NULL ,
[Subject] [nvarchar] (max) NULL ,
[Location] [nvarchar] (max) NULL ,
[Description] [nvarchar](max) NULL ,
[Status] [int] NULL ,
[Label] [int] NULL ,
[ResourceId] [int] NULL ,
[ResourceIds] [nvarchar](max) NULL ,
[ReminderInfo] [nvarchar](max) NULL ,
[RecurrenceInfo] [nvarchar](max) NULL ,
[PercentComplete] [int] NULL,
[CustomField1] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[Resources] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[IdSort] [int] NULL ,
[ParentId] [int] NULL ,
[Description] [nvarchar] (max) NULL ,
[Color] [int] NULL ,
[Image] [image] NULL ,
[CustomField1] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[TaskDependencies](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ParentId] [int] NULL,
[DependentId] [int] NULL,
[Type] [int] NOT NULL,
GO
New DXperience WinForms Project
The next step is to create a new Visual Studio project. DXperience 12.2 ships with multiple ready-to-use Project Templates and Wizards that create all the user interface elements for you.
From File | New | Project, select Templates and then DevExpress: Visual C# | WinForms.

Notice how the wizards are split by a solution theme
· Word Inspired Application: This project wizard let’s you build apps with a fully functional Rich Text Editor. Learn More Here.
· Outlook Inspired Application: Using the Scheduler Control, this wizard allows you to build powerful calendaring solutions. Learn More Here
· Data Analysis Application: With this wizard, you can build Business Intelligence, reporting and analytics apps using the DevExpress PivotGrid Control. Learn More Here
· Windows Forms Application: This wizard allows you to mix and match different UI elements. And this is the one we are going to use.
DXperience 12.2 ships with a ton of build-in and ready-to-use Application Skins. We can pre-define the skin we want right from the wizard or let the user select one of their liking afterwards - at runtime.

Click the drop down arrow next to the Client Area and choose the Scheduler Control. There are three templates available:
· Simple: This template will use the Scheduler Control without auxiliary navigation options.
· Range Control: Along with the primary Scheduler Control, a Range Control will be included for easy date range selection.
· Date Navigator: This template gives you full calendar control to navigate through the calendar.

Once you click Create and then run your project, you will see a functional scheduling/calendaring app.

You can navigate through dates using the Date Navigator on the right. You can create new appointments using context menus or using the Appointment tab in the Ribbon. You can drag-and-drop appointments around, and even drag them onto the Date Navigator on the right. You can use the Home and View tabs in the Ribbon to manipulate the XtraScheduler Control in many ways. All of this functionality is already built into the controls and requires not coding on your part.
The only thing left to do is to bind it to the data tables that we’ve defined earlier.
Binding to Data
Following the binding the XtraScheduler article found in the online documentation or this quick how to video, click the Smart Tag on the schedulerStorage component and add Project Data Source for the Appointments.

Select Database…

Then Dataset and click Next…

Connect to the “DXProjectManager” database. (If that’s what you named it)

And select our tables: Appointments, Resources, and TaskDependencies.

After this, the new data set has been imported and we can assign the individual tables to the scheduler.

All of the fields are automatically detected from the naming convention and are mapped correctly.

You probably have noticed a CustomField1 in our database schema. Here is where we can map it to appointments:

Repeat the data binding for the Resources in the same way

Add both CustomField1 and IdSort to the Custom Field list. The IdSort field is necessary to support the hierarchical resources feature of the Gantt View.
That's it for binding data. If you right-click the designer and click View Code (or press F7) and look at the Form1_Load event handler, you'll see that the data wizards already added code to fill our data sets.
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dXProjectManagerDataSet.Resources' table.
// You can move, or remove it, as needed.
resourcesTableAdapter.Fill(dXProjectManagerDataSet.Resources);
// TODO: This line of code loads data into the 'dXProjectManagerDataSet.Appointments' table.
// You can move, or remove it, as needed.
appointmentsTableAdapter.Fill(dXProjectManagerDataSet.Appointments);
}
In order to see this working, open SSMS and add a couple of rows to the Resources table with descriptions Deployment and Testing.

Once you run the app from Visual Studio, Group by Resource and you should be able to see your two resources: Deployment and Testing, displayed above the scheduler control.

Persisting Changes
To persist changes made using the scheduler control, it is necessary to handle the following events on the schedulerStorage component: AppointmentsChanged, AppointmentsDeleted, AppointmentsInserted.

They can each be handled with the same code. The code will simple tell the underlying table adapters to save any changes in their datasets:
private void schedulerStorage_AppointmentsChanged(object sender, PersistentObjectsEventArgs e)
{
CommitTask();
}
private void schedulerStorage_AppointmentsDeleted(object sender, PersistentObjectsEventArgs e)
{
CommitTask();
}
private void schedulerStorage_AppointmentsInserted(object sender, PersistentObjectsEventArgs e)
{
CommitTask();
}
private void CommitTask()
{
appointmentsTableAdapter.Update(dXProjectManagerDataSet);
}
And that's it!

The scheduler application now allows for creating, manipulating and deleting appointments and having those changes persisted back to a SQL Server database. We have a fair start on a great Windows 8 style user interface. And all of this with just a few lines of code!
Download the Source Code Part I
Stay tuned as we continue to build this app.