WPF DatePicker日期选择器的详细利用教程

守听  金牌会员 | 2024-11-6 04:43:34 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 877|帖子 877|积分 2631

WPF 中的 DatePicker 控件是一个用于选择日期的简单控件。它提供了一个用户友爱的界面,允许用户从下拉日历中选择日期,也可以直接输入日期。以下是关于 WPF DatePicker 控件的详细利用教程。
1. 基本先容

DatePicker 控件团结了 TextBox 和 Calendar 的功能,用户既可以手动输入日期,也可以通过下拉的日历界面来选择日期。
基本语法:
  1. <DatePicker />
复制代码
2. 基本利用

2.1 显示一个简单的 DatePicker

最简单的利用方式是在 XAML 中直接定义一个 DatePicker 控件。
  1. <Window x:Class="WpfApp.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="DatePicker Example" Height="200" Width="400">    <Grid>        <DatePicker />
  2.     </Grid></Window>
复制代码
这个例子会在窗口中显示一个日期选择器,用户可以点击文本框旁边的下拉箭头选择日期,大概直接输入日期。
2.2 获取选中的日期

可以通过 SelectedDate 属性获取用户选中的日期。
  1. <Window x:Class="WpfApp.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         Title="DatePicker Example" Height="200" Width="400">
  5.     <StackPanel>
  6.         <DatePicker x:Name="MyDatePicker" SelectedDateChanged="MyDatePicker_SelectedDateChanged"/>
  7.         <TextBlock x:Name="SelectedDateText" FontSize="16" Margin="10"/>
  8.     </StackPanel>
  9. </Window>
复制代码
后台代码:
  1. private void MyDatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3.     if (MyDatePicker.SelectedDate.HasValue)
  4.     {
  5.         SelectedDateText.Text = $"Selected Date: {MyDatePicker.SelectedDate.Value.ToShortDateString()}";
  6.     }
  7. }
复制代码
表明:


  • SelectedDateChanged 变乱会在用户选择新日期时触发。
  • SelectedDate 属性用于获取当前选中的日期,HasValue 查抄是否有有用的日期值。
2.3 设置默认选中的日期

可以通过 SelectedDate 属性设置默认选中的日期。
  1. <DatePicker SelectedDate="2024-01-01"/>
复制代码
这会让 DatePicker 控件默认选中 2024 年 1 月 1 日。
3. 日期格式

3.1 设置日期显示格式

DatePicker 可以通过 SelectedDateFormat 属性来控制日期显示格式。该属性有两个可选值:


  • Short:短日期格式(如 MM/dd/yyyy)。
  • Long:长日期格式(如 Monday, January 1, 2024)。
  1. <DatePicker SelectedDateFormat="Long"/>
复制代码
3.2 设置自定义日期格式

通过 TextStringFormat 属性,您可以自定义日期的显示格式。
  1.                 <DatePicker.Resources>
  2.                     <Style TargetType="DatePickerTextBox">
  3.                         <Setter Property="BorderThickness"
  4.                                 Value="0" />
  5.                         <Setter Property="Template">
  6.                             <Setter.Value>
  7.                                 <ControlTemplate>
  8.                                     <TextBox x:Name="PART_TextBox"
  9.                                              Text="{Binding Path=SelectedDate, StringFormat={}{0:yyyy年MM月dd日}, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
  10.                                 </ControlTemplate>
  11.                             </Setter.Value>
  12.                         </Setter>
  13.                     </Style>
  14.                 </DatePicker.Resources>
复制代码
这里利用 yyyy年MM月dd日 格式显示日期,用户在界面中看到的日期将类似于 2024年01月01日。
4. 限制日期选择

4.1 设置可选的日期范围

可以通过 DisplayDateStart 和 DisplayDateEnd 限制用户选择的日期范围。
  1. <DatePicker DisplayDateStart="2024-01-01" DisplayDateEnd="2024-12-31"/>
复制代码
此示例限制用户只能选择 2024 年的日期。
4.2 禁用特定日期

通过 BlackoutDates 属性,可以禁用特定日期,用户将无法选择这些日期。
  1. <DatePicker>
  2.     <DatePicker.BlackoutDates>
  3.         <CalendarDateRange Start="2024-12-24" End="2024-12-26"/>
  4.     </DatePicker.BlackoutDates>
  5. </DatePicker>
复制代码
这会禁用 2024 年 12 月 24 日到 12 月 26 日之间的日期。
5. 变乱处理

5.1 SelectedDateChanged 变乱

SelectedDateChanged 变乱用于捕捉用户改变日期的举动。
  1. private void MyDatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
  2. {
  3.     if (MyDatePicker.SelectedDate.HasValue)
  4.     {
  5.         MessageBox.Show($"Selected Date: {MyDatePicker.SelectedDate.Value.ToShortDateString()}");
  6.     }
  7. }
复制代码
5.2 CalendarOpened 和 CalendarClosed 变乱



  • CalendarOpened:当日历下拉框被打开时触发。
  • CalendarClosed:当日历下拉框被关闭时触发。
  1. <DatePicker CalendarOpened="DatePicker_CalendarOpened" CalendarClosed="DatePicker_CalendarClosed"/>
复制代码
后台代码:
  1. private void DatePicker_CalendarOpened(object sender, RoutedEventArgs e)
  2. {
  3.     MessageBox.Show("Calendar opened");
  4. }
  5. private void DatePicker_CalendarClosed(object sender, RoutedEventArgs e)
  6. {
  7.     MessageBox.Show("Calendar closed");
  8. }
复制代码
6. 样式与外观

6.1 修改 DatePicker 的样式

可以通过 Style 来修改 DatePicker 的外观。
  1. <DatePicker>
  2.     <DatePicker.Style>
  3.         <Style TargetType="DatePicker">
  4.             <Setter Property="Background" Value="LightBlue"/>
  5.             <Setter Property="FontSize" Value="16"/>
  6.         </Style>
  7.     </DatePicker.Style>
  8. </DatePicker>
复制代码
这里我们将 DatePicker 配景设置为浅蓝色,字体大小设置为 16。
6.2 自定义 Calendar 的样式

可以为 DatePicker 中的 Calendar 控件应用自定义样式。
  1. <DatePicker>
  2.     <DatePicker.CalendarStyle>
  3.         <Style TargetType="Calendar">
  4.             <Setter Property="Background" Value="LightGray"/>
  5.         </Style>
  6.     </DatePicker.CalendarStyle>
  7. </DatePicker>
复制代码
这将把日历的配景颜色设置为浅灰色。
7. 实际应用场景

DatePicker 控件非常得当以下场景:


  • 表单中的日期选择(如生日、预约日期等)。
  • 日期输入(如航班、酒店预订的日期)。
  • 需要日期验证的场景(通过限制选择范围和禁用特定日期)。
通过团结 WPF 的数据绑定和样式自定义,你可以轻松将 DatePicker 控件集成到复杂的应用步伐中,提供轻便易用的日期选择功能。
8. 小结



  • DatePicker 是 WPF 中用于选择日期的控件,用户可以通过下拉日历或手动输入日期。
  • 可以自定义日期显示格式,限制选择范围,并禁用特定日期。
  • 提供了多个变乱以处理日期选择和日历打开、关闭的举动。
  • 通过样式和模板,可以自由定制控件的外观,满足不同场景需求。
这是一个强大而易于利用的控件,实用于任何需要日期选择的 WPF 应用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表