/// <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); }