【问题标题】:WPF datepicker BlackoutDates on SelectedDateChangedWPF datepicker BlackoutDates on SelectedDateChanged
【发布时间】:2014-01-14 10:35:06
【问题描述】:

我有两个日期选择器:“dpInputDate”和“dpDueDate”。现在 DueDate 不能小于 InputDate。所以我使用了 BlackoutDates.AddDatesInPast();并且在应用程序启动时工作正常。现在的事情是当我更改 dpInputDate 的选定日期时,dpDueDate 会自动获得相同的值。问题是被涂黑的日期数量保持不变。这是我使用的代码:

 private void dpInputDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
    {
        dpDueDate.SelectedDate = dpInputDate.SelectedDate;

        dpDueDate.BlackoutDates.Clear();
        dpDueDate.BlackoutDates.AddDatesInPast();
    }

如何管理?

更新:

private void dpDueDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
    {            
        if (dpDueDate.SelectedDate != null)
        {
            DateTime date = (DateTime)dpDueDate.SelectedDate;
            dpDueDate.BlackoutDates.Clear();
            dpDueDate.BlackoutDates.Add(new CalendarDateRange(new DateTime(1 / 1 / 2001), date));
        }
        else 
        {
            dpDueDate.BlackoutDates.AddDatesInPast();
        }
    }

【问题讨论】:

    标签: c# wpf datepicker


    【解决方案1】:

    AddDatesInPast() 屏蔽了来自DateTime.Now(即今天)的所有日期,而不是向后屏蔽SelectedDate

    因此,您需要计算自己的 CalendarDateRange,并将 BlackoutDates 设置为您的新范围。 有一个需要两个日期的重载,您可以将其用于您的目的 http://msdn.microsoft.com/en-us/library/cc672700(v=vs.110).aspx

    【讨论】:

    • 嘿,我编辑了我的代码,但现在我得到了这个异常:“指定的参数超出了有效值的范围。参数名称:值无效。” .我意识到这是因为我的 datepicker 选择了日期格式,但是如何将其更改为正确的格式?
    • 您对 DateTime 构造函数的使用不正确。您想使用其中一种重载,例如new DateTime(2001,1,1)。但这仍然会使 2001 年之前的日期可用,这可能不是您想要的。相反,您可以使用dpDueDate.BlackoutDates.Add(DateTime.MinValue,date)
    • 好的,tnx,我改变了它,但仍然得到同样的异常?如何处理?
    • “参数名称:值无效”看起来不像上面代码的错误......没有显示名为“值”的参数。你确定你的错误在这里?
    • 是的,我发现了问题所在...我不得不从 dpDueDate.SelectedDate 中减去一天。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多