DatePicker
Often in user interfaces a date selection is needed to provide a scheduling function. In WPF, we can use the DatePicker
to present a calendar pop-up window.
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. Here we access the sender object (the DatePicker
) and its SelectedDate
property.
SelectedDate
returns a nullable DateTime
instance. When null
, no date is selected.DateTime
is not null
, we use it in the same way as any other DateTime
struct
.ToShortDateString
on the returned DateTime
—it contains no time information, only a date.<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>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(); } } } }
Calendar
There exists a Calendar
control, which is the same as DatePicker
but involves no pop-up window. A DatePicker
can save space and improve the interface
.
There are many ways to accept input dates—a program could even parse a TextBox
. But in cases where a date selection is needed, a DatePicker
is worth consideration.