using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;namespace CalendarExample
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();            //Sets a Calendar to display a range of dates from 1/10/2009 to 
            //4/18/2009.  2/15/2009 is selected, but 3/2009 is initially 
            //displayed.
            cal.SelectedDate = new DateTime(2009, 2, 15);
            cal.DisplayDate = new DateTime(2009, 3, 15); //if DisplayDate is not set, the Calendar displays
            //the SelectedDate.
            cal.DisplayDateStart = new DateTime(2009, 1, 10);
            cal.DisplayDateEnd = new DateTime(2009, 4, 18);            //Sets a Calendar to allow multiple selections, and configures
            //some dates to be unselectable.
            cal3.SelectionMode = CalendarSelectionMode.MultipleRange;
            cal3.DisplayDate = new DateTime(2009, 1, 1);
            cal3.DisplayDateStart = new DateTime(2009, 1, 1);
            cal3.DisplayDateEnd = new DateTime(2009, 1, 31);
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 2), new DateTime(2009, 1, 4)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 9)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 16)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 23), new DateTime(2009, 1, 25)));
            cal3.BlackoutDates.Add(new CalendarDateRange(new DateTime(2009, 1, 30)));            cal3.SelectedDates.Add(new DateTime(2009, 1, 5));
            cal3.SelectedDates.AddRange(new DateTime(2009, 1, 12), new DateTime(2009, 1, 15));
            cal3.SelectedDates.Add(new DateTime(2009, 1, 27));            //Hook up events to event handlers.
            dp1.CalendarOpened += new RoutedEventHandler(dp1_CalendarOpened);
            dp1.CalendarClosed += new RoutedEventHandler(dp1_CalendarClosed);            dp2.SelectedDateChanged += new EventHandler<SelectionChangedEventArgs>(dp2_SelectedDateChanged);
            cal2.DisplayDateChanged += new EventHandler<CalendarDateChangedEventArgs>(cal_DisplayDateChanged);
        }
        //Simple event handlers that updates a TextBlock when 
        //the drop-down calendar is opened or closed.
        void dp1_CalendarOpened(object sender, RoutedEventArgs e)
        {
            text1.Text = "DatePicker Calendar opened!";
        }
        void dp1_CalendarClosed(object sender, RoutedEventArgs e)
        {
            text1.Text = "DatePicker Calendar closed!";
        }        //Updates a TextBlock with information from the SelectedDateChanged event.
        void dp2_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            //RemovedItems will be null if this is the first time a date was selected.
            if (e.RemovedItems == null || e.RemovedItems.Count == 0)
            {
                text1.Text = "Changed SelectedDate from null to " + e.AddedItems[0] + "!";
            }
            else
            {
                text1.Text = "Changed SelectedDate from " + e.RemovedItems[0] + " to " + e.AddedItems[0] + "!";
            }
        }        //Updates a TextBlock with information from the DisplayDateChanged event.
        //This will happen every time the visible month changes, whether triggered
        //by user input or by code.
        void cal_DisplayDateChanged(object sender, CalendarDateChangedEventArgs e)
        {
            //This should never occur unless DisplayDate is explicitly set to null.
            if (e.RemovedDate == null)
            {
                text1.Text = "Changed DisplayDate from null to " + e.AddedDate + "!";
            }
            else
            {
                text1.Text = "Changed DisplayDate from " + e.RemovedDate + " to " + e.AddedDate + "!";
            }
        }
    }
}form msdn