/// <summary>
        /// Override the default template
        /// </summary>
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            datePicker = (DatePicker)GetTemplateChild("PART_DatePicker");
            if (datePicker == null)
            {
                datePicker = new DatePicker();
            }
            timePicker = (TimePicker)GetTemplateChild("PART_TimePicker");
            if (timePicker == null)
            {
                timePicker = new TimePicker();
            }
            datePicker.SelectedDateChanged  += delegate { SetCurrentDateTime(); };
            timePicker.SelectedTimeChanged  += delegate { SetCurrentDateTime(); };
            datePicker.CurrentlySelectedDate = DateTimeSelected;
            timePicker.SelectedTime          = DateTimeSelected.TimeOfDay;

            //snyc the min and max date for datepicker
            Binding minDateBinding = new Binding("MinDate");

            minDateBinding.Source = this;
            datePicker.SetBinding(DatePicker.MinDateProperty, minDateBinding);
            Binding maxDateBinding = new Binding("MaxDate");

            maxDateBinding.Source = this;
            datePicker.SetBinding(DatePicker.MaxDateProperty, maxDateBinding);

            //snyc the min and max time for timepicker
            Binding minTimeBinding = new Binding("MinDate.TimeOfDay");

            minTimeBinding.Source = this;
            timePicker.SetBinding(TimePicker.MinTimeProperty, minTimeBinding);
            Binding maxTimeBinding = new Binding("MaxDate.TimeOfDay");

            maxTimeBinding.Source = this;
            timePicker.SetBinding(TimePicker.MaxTimeProperty, maxTimeBinding);
        }