启用/禁用WPF日历时,将丢失禁用日期

本文关键字:日期 禁用 WPF 日历 启用 | 更新日期: 2023-09-27 18:14:53

我有一个日历控件,我使用停电日期禁用日期。日历控件绑定到另一个属性,该属性允许用户启用或禁用日历。

停电日期工作完美,但是,当用户启用/禁用日历时,所有停电日期都消失了-为什么会发生这种情况,或者我如何阻止它发生?

<Calendar IsEnabled="{Binding StartTheSceduleNow, Converter={StaticResource BoolToOppositeBoolConverter}}" x:Name="Calender" Loaded="CalendarLoaded"  >

.cs

背后的代码
private void CalendarLoaded(object sender, RoutedEventArgs e)
{
    this.Calender.BlackoutDates.Add(new CalendarDateRange(DateTime.MinValue, DateTime.Now.AddDays(-1)));
}

启用/禁用WPF日历时,将丢失禁用日期

一定是你的原因。对我来说,这个XAML与你的Loaded方法一起工作:

<Grid>
  <StackPanel>
    <CheckBox x:Name="theBox" />
    <Calendar IsEnabled="{Binding IsChecked, ElementName=theBox}" x:Name="Calender" Loaded="CalendarLoaded" />
  </StackPanel>
</Grid>

当我切换复选框时,所有的BlackoutDates都保留。

如果您设置较大的BlackoutDates(从DateTime.MinValue到几乎当前的dateTime),日历覆盖DisplayDateStart。因此,您只需将DisplayDateStart设置为value,您需要(例如DateTime.MinValue)