diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Implementation/DateTimePicker.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Implementation/DateTimePicker.cs
new file mode 100644
index 00000000..27055917
--- /dev/null
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Implementation/DateTimePicker.cs
@@ -0,0 +1,196 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Microsoft.Windows.Controls
+{
+ public class DateTimePicker : Control
+ {
+ #region Members
+
+ private Calendar _calendar;
+
+ #endregion //Members
+
+ #region Properties
+
+ #region Format
+
+ public static readonly DependencyProperty FormatProperty = DependencyProperty.Register("Format", typeof(DateTimeFormat), typeof(DateTimePicker), new UIPropertyMetadata(DateTimeFormat.FullDateTime, OnFormatChanged));
+ public DateTimeFormat Format
+ {
+ get { return (DateTimeFormat)GetValue(FormatProperty); }
+ set { SetValue(FormatProperty, value); }
+ }
+
+ private static void OnFormatChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
+ {
+ DateTimePicker DateTimePicker = o as DateTimePicker;
+ if (DateTimePicker != null)
+ DateTimePicker.OnFormatChanged((DateTimeFormat)e.OldValue, (DateTimeFormat)e.NewValue);
+ }
+
+ protected virtual void OnFormatChanged(DateTimeFormat oldValue, DateTimeFormat newValue)
+ {
+
+ }
+
+ #endregion //Format
+
+ #region FormatString
+
+ public static readonly DependencyProperty FormatStringProperty = DependencyProperty.Register("FormatString", typeof(string), typeof(DateTimePicker), new UIPropertyMetadata(default(String), OnFormatStringChanged));
+ public string FormatString
+ {
+ get { return (string)GetValue(FormatStringProperty); }
+ set { SetValue(FormatStringProperty, value); }
+ }
+
+ private static void OnFormatStringChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
+ {
+ DateTimePicker DateTimePicker = o as DateTimePicker;
+ if (DateTimePicker != null)
+ DateTimePicker.OnFormatStringChanged((string)e.OldValue, (string)e.NewValue);
+ }
+
+ protected virtual void OnFormatStringChanged(string oldValue, string newValue)
+ {
+ if (string.IsNullOrEmpty(newValue))
+ throw new ArgumentException("CustomFormat should be specified.", FormatString);
+ }
+
+ #endregion //FormatString
+
+ #region IsOpen
+
+ public static readonly DependencyProperty IsOpenProperty = DependencyProperty.Register("IsOpen", typeof(bool), typeof(DateTimePicker), new UIPropertyMetadata(false));
+ public bool IsOpen
+ {
+ get { return (bool)GetValue(IsOpenProperty); }
+ set { SetValue(IsOpenProperty, value); }
+ }
+
+ #endregion //IsOpen
+
+ #region SelectedDate
+
+ public static readonly DependencyProperty SelectedDateProperty = DependencyProperty.Register("SelectedDate", typeof(DateTime?), typeof(DateTimePicker), new UIPropertyMetadata(DateTime.Now, new PropertyChangedCallback(OnSelectedDateChanged), new CoerceValueCallback(OnCoerceSelectedDate)));
+ public DateTime? SelectedDate
+ {
+ get { return (DateTime?)GetValue(SelectedDateProperty); }
+ set { SetValue(SelectedDateProperty, value); }
+ }
+
+ private static object OnCoerceSelectedDate(DependencyObject o, object value)
+ {
+ DateTimePicker dateTimePicker = o as DateTimePicker;
+ if (dateTimePicker != null)
+ return dateTimePicker.OnCoerceSelectedDate((DateTime?)value);
+ else
+ return value;
+ }
+
+ private static void OnSelectedDateChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
+ {
+ DateTimePicker dateTimePicker = o as DateTimePicker;
+ if (dateTimePicker != null)
+ dateTimePicker.OnSelectedDateChanged((DateTime?)e.OldValue, (DateTime?)e.NewValue);
+ }
+
+ protected virtual DateTime? OnCoerceSelectedDate(DateTime? value)
+ {
+ // TODO: Keep the proposed value within the desired range.
+ return value;
+ }
+
+ protected virtual void OnSelectedDateChanged(DateTime? oldValue, DateTime? newValue)
+ {
+ if (_calendar != null && _calendar.SelectedDate.Value != newValue.Value)
+ _calendar.SelectedDate = newValue;
+ }
+
+ #endregion //SelectedDate
+
+ #endregion //Properties
+
+ #region Constructors
+
+ static DateTimePicker()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(DateTimePicker), new FrameworkPropertyMetadata(typeof(DateTimePicker)));
+ }
+
+ public DateTimePicker()
+ {
+ Keyboard.AddKeyDownHandler(this, OnKeyDown);
+ Mouse.AddPreviewMouseDownOutsideCapturedElementHandler(this, OnMouseDownOutsideCapturedElement);
+ }
+
+ #endregion //Constructors
+
+ #region Base Class Overrides
+
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+
+ _calendar = (Calendar)GetTemplateChild("Part_Calendar");
+ _calendar.SelectedDatesChanged += Calendar_SelectedDatesChanged;
+ _calendar.SelectedDate = SelectedDate;
+ }
+
+ #endregion //Base Class Overrides
+
+ #region Event Handlers
+
+ private void OnKeyDown(object sender, KeyEventArgs e)
+ {
+ switch (e.Key)
+ {
+ case Key.Escape:
+ case Key.Tab:
+ {
+ CloseDateTimePicker();
+ break;
+ }
+ }
+ }
+
+ private void OnMouseDownOutsideCapturedElement(object sender, MouseButtonEventArgs e)
+ {
+ CloseDateTimePicker();
+ }
+
+ void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (e.AddedItems.Count > 0)
+ {
+ var newDate = (DateTime?)e.AddedItems[0];
+ SelectedDate = newDate.Value;
+ }
+ }
+
+ #endregion //Event Handlers
+
+ #region Methods
+
+ private void CloseDateTimePicker()
+ {
+ if (IsOpen)
+ IsOpen = false;
+ ReleaseMouseCapture();
+ }
+
+ #endregion //Methods
+ }
+}
diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Themes/Generic.xaml
new file mode 100644
index 00000000..534a89c2
--- /dev/null
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimePicker/Themes/Generic.xaml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml
index e7e852c2..188d4c2e 100644
--- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml
@@ -7,12 +7,13 @@