TheDeveloperBlog.com


WPF DatePicker Example: SelectedDate

DatePicker. Often in user interfaces a date selection is needed. This allows us to provide a scheduling function. In WPF, we can use the DatePicker to present a calendar pop-up window. And any day (of any month) can be selected.

Based on:

.NET 4.5


Example. Please create a new WPF project and drag a DatePicker control to the window. Next, we add a useful event handler to our control: SelectedDateChanged. Type "SelectedDateChanged" and Visual Studio will insert the C# event handler.

In SelectedDateChanged, we access the sender object (the DatePicker) and its SelectedDate property. This property returns a nullable DateTime instance. When null, no date is selected.

PropertyNullable DateTime

And: If the nullable DateTime is not null, we use it in the same way as any other DateTime struct.

DateTime

Tip: We invoke ToShortDateString on the returned DateTime—it contains no time information, only a date.

Example markup: XAML

<Window x:Class="WpfApplication12.MainWindow"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	Title="MainWindow" Height="350" Width="525">
    <Grid>
	<DatePicker HorizontalAlignment="Left"
		    Margin="10,10,0,0"
		    VerticalAlignment="Top"
		    SelectedDateChanged="DatePicker_SelectedDateChanged"/>
    </Grid>
</Window>

Example code: C#

using System;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication12
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
	public MainWindow()
	{
	    InitializeComponent();
	}

	private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
	{
	    // ... Get DatePicker reference.
	    var picker = sender as DatePicker;

	    // ... Get nullable DateTime from SelectedDate.
	    DateTime? date = picker.SelectedDate;
	    if (date == null)
	    {
		// ... A null object.
		this.Title = "No date";
	    }
	    else
	    {
		// ... No need to display the time.
		this.Title = date.Value.ToShortDateString();
	    }
	}
    }
}


Summary. There many ways to accept input dates—a program could even parse a TextBox. Sometimes, a simpler user interface has advantages. It may be more consistent. But in cases where a date selection is needed, a DatePicker is worth consideration.

TextBox

Also: There exists a Calendar control, which is the same as DatePicker but involves no pop-up window.

Calendar