WPF 使用日期选择器控件 DatePicker

WPF 使用日期选择器控件 DatePicker, 为了能更方面的选择日期,在 .net 4.0 之后,WPF 中提供了相应的控件,显示效果如下:

 对应的代码如下:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
     <TextBlock Text="Choose Date: " VerticalAlignment="Center"/>
     <TextBox x:Name="txt_date" Margin="20,0" MinWidth="100" MaxWidth="150" Text="{Binding ElementName=date_picker, Path=SelectedDate}" VerticalAlignment="Center"/>
     <DatePicker x:Name="date_picker" VerticalAlignment="Center"/>
</StackPanel>

外层使用 StackPancel 进行布局,水平显示;
使用一个 TextBlock 显示 “Choose Date:”;
使用一个 TextBox 来显示选择 DatePicker 中的日期;
使用一个 DatePicker

核心代码是将 TextBox 的 Text 属性绑定 DatePicker 的 SelectedDate 属性:

Text="{Binding ElementName=date_picker, Path=SelectedDate}"

点击 DatePicker 控件,显示如下,可以根据需求随意选择日期

默认的显示格式如下:

      注意,DatePicker 只能选择日期,而不包含时间部分,如果需要格式化日期的显示,可以通过设置 TextBox 的 StringFormat 属性,如:

Text="{Binding ElementName=date_picker, Path=SelectedDate, StringFormat=yyyy-MM-dd}"

而且 DatePicker 也有 SelectedDateChanged 事件,可以在后台代码中使用 SelectedDate 属性, 示例代码如下:
注意:SelectDate 属性为 DateTime? 类型(可为空的DateTime类型)
既可以获取当前选择的时间,也可以为它赋值

private void Date_picker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) {
            if (date_picker.SelectedDate != null) {
                MessageBox.Show(date_picker.SelectedDate.ToString());//获取所选择的时间
            }
            else {
                date_picker.SelectedDate = DateTime.Now;//将当前时间复制给DatePicker控件
            }
        }

指定日期区间,可以通过 DisplayDateStart 和 DisplayDateEnd 来指定可选择的日期区间, 代码示例如下:

DisplayDateStart="2019-09-16" DisplayDateEnd="2019-09-20"

显示结果:

参考:

DatePicker Class
The DatePicker control

相关链接:

WPF的DatePicker–日期选择器
WPF Grid 根据内容自适应