前言:
眼前姐妹们对“日历控件怎么设置哪些时间可选”大体比较关切,大家都需要学习一些“日历控件怎么设置哪些时间可选”的相关文章。那么小编在网络上汇集了一些关于“日历控件怎么设置哪些时间可选””的相关资讯,希望看官们能喜欢,大家快快来学习一下吧!摘要
日历控件用于创建可视日历,让用户选择日期并在选择日期时触发事件。Calendar 控件在 System.Windows.Controls 命名空间中定义。
正文
**显示模式 **
Calendar类的DisplayMode属性表示Calendar的显示格式,可以是月、年或年。默认模式为“月”。将DisplayMode设置为Year和Decade。
DisplayDateStart 指定日期视图起始显示范围
DisplayDateEnd 指定日期视图结尾显示范围
FirstDayOfWeek 指定某一天作为一个星期的第一天
SelectionMode 允许控件是否可以多选日期
CalendarSelectionMode
None
不允许选择。
SingleDate
通过设置 SelectedDate 或 SelectedDates 中的第一个值,只能选择一个日期。不能使用 AddRange。
SingleRange
可以选择单个日期范围。设置 SelectedDate、将日期单独添加到 SelectedDates 或使用 AddRange 将清除 SelectedDates 中的所有先前值。
MultipleRange
可以选择多个不连续的日期范围。将日期单独添加到 SelectedDates 或使用 AddRange 不会清除 SelectedDates。设置 SelectedDate 仍将清除 SelectedDates,但可以添加其他日期或范围。添加包含一些已选择日期或与另一个范围重叠的日期的范围会导致这些范围的并集,并且不会导致异常。
<Grid> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <Calendar DisplayMode="Month" x:Name="cad1" SelectedDatesChanged="cad1_SelectedDatesChanged" SelectionMode="MultipleRange"></Calendar> <Button Grid.Row="1" Content="切换显示模式" Margin="10" Click="Button_Click"></Button> <TextBlock x:Name="txtInfo" Margin="10" Foreground="Red" Grid.Row="2"></TextBlock></Grid>
int idx = 0;private void Button_Click(object sender, RoutedEventArgs e){ cad1.DisplayMode = (CalendarMode)(idx % 3); idx++;}private void cad1_SelectedDatesChanged(object sender, SelectionChangedEventArgs e){ txtInfo.Text = ""; for (int i = 0; i < cad1.SelectedDates.Count; i++) { txtInfo.Text += cad1.SelectedDates[i].ToString("yyyy-MM-dd")+System.Environment.NewLine; } }
BlackoutDates
Calendar类的BlackoutDates属性表示不可用于选择的日期集合。所有非选择日期都用叉号标记。
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Calendar x:Name="cal" Grid.Column="0" Margin="10"> <Calendar.BlackoutDates> <CalendarDateRange Start="2022-5-1" End="2022-5-10"></CalendarDateRange> </Calendar.BlackoutDates> </Calendar> <StackPanel Grid.Column="1" Margin="10"> <ListBox x:Name="lstDate" Height="200" Margin="10"></ListBox> <Button x:Name="btnDisable" Content="停用" Margin="10" Click="btnDisable_Click"></Button> </StackPanel></Grid>
private void LoadDate(){ var curMonth = cal.DisplayDate; var minDate = curMonth.AddDays(1 - curMonth.Day).Date; var maxDate = curMonth.AddDays(1 - curMonth.Day).Date.AddMonths(1).AddSeconds(-1); for (DateTime i = minDate; i < maxDate; i=i.AddDays(1)) { lstDate.Items.Add(i); }}private void Window_Loaded(object sender, RoutedEventArgs e){ LoadDate();}private void btnDisable_Click(object sender, RoutedEventArgs e){ cal.BlackoutDates.Add(new CalendarDateRange((DateTime)lstDate.SelectedItem));}
DatePicker基本功能与Calendar一样的,只有一点不同,DatePicker可以手动输入
<Grid> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <DatePicker Name="dtp" IsDropDownOpen="True" SelectedDateChanged="dtp_SelectedDateChanged"></DatePicker> <TextBlock x:Name="txt" Grid.Row="1"></TextBlock></Grid>
public Window2(){ InitializeComponent(); dtp.BlackoutDates.Add(new CalendarDateRange(DateTime.Parse("2022-06-18"), DateTime.Parse("2022-06-20")));}private void dtp_SelectedDateChanged(object sender, SelectionChangedEventArgs e){ txt.Text = dtp.Text;}
标签: #日历控件怎么设置哪些时间可选