我正在为一个kiosk(一个长时间运行的应用程序)编写一个C# WPF应用程序。在主窗口中,有两个日期选择器,只能选择今天和未来的日子。所以我检查了BlackoutDate属性,X符号出现在过去的日期中。这对现在来说是正确的(或者更好,当我运行应用程序时)。时光流逝。新的一天到来,但是BlackoutDays的列表没有更新,那么现在可以选择(新的)之前的一天。看起来BlackoutDays更新/停止到应用程序的启动日期。如何更新控件以避免选择过去几天而不重新运行应用程序?
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; } }
1条答案
按热度按时间dsekswqp1#
这是我的解决方案:
我设置了一个30分钟的计时器来检测午夜后的时刻。此时,代码将更新GUI上下文中的控件。