C# WPF更新DatePickers中的blackoutDates

72qzrwbm  于 2023-10-22  发布在  C#
关注(0)|答案(1)|浏览(111)

我正在为一个kiosk(一个长时间运行的应用程序)编写一个C# WPF应用程序。
在主窗口中,有两个日期选择器,只能选择今天和未来的日子。
所以我检查了BlackoutDate属性,X符号出现在过去的日期中。
这对现在来说是正确的(或者更好,当我运行应用程序时)。
时光流逝。新的一天到来,但是BlackoutDays的列表没有更新,那么现在可以选择(新的)之前的一天。
看起来BlackoutDays更新/停止到应用程序的启动日期。
如何更新控件以避免选择过去几天而不重新运行应用程序?

dsekswqp

dsekswqp1#

这是我的解决方案:
我设置了一个30分钟的计时器来检测午夜后的时刻。此时,代码将更新GUI上下文中的控件。

private bool _updateDp = false;

private void timerUpdateDatePicker_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        int hour = DateTime.Now.Hour;
        LogManager.Write($"[Main][timerUpdDp] hour: {hour} - update: {_updateDp}");
        if (hour == 0)
        {
            if (_updateDp) // only once
            {
                LogManager.Write("[Main][timerUpdDp] update1");
                dtDataPartenza.Dispatcher.Invoke( delegate
                {
                    LogManager.Write("[Main][timerUpdDp] update delegate");
                    dtDataPartenza.SelectedDate = DateTime.Now;
                    dtDataPartenza.BlackoutDates.AddDatesInPast();
                    dtDataRitorno.SelectedDate = DateTime.Now;
                    dtDataRitorno.BlackoutDates.AddDatesInPast();
                });
                _updateDp = false;
            }
        }
        else
        {
            _updateDp = true;
        }
    }

相关问题