【问题标题】:Refresh WPF ListView based on EndTime property基于 EndTime 属性刷新 WPF ListView
【发布时间】:2019-04-16 10:56:21
【问题描述】:

基于 EndTime 属性刷新 WPF ListView 的最佳方法是什么。

每分钟使用 TimeDispatcher 重新加载列表?

我的意思是我有一个包含会议对象的列表。

有开始和结束时间。当 EndTime 为

例如车站的火车到达面板。

有什么建议/例子吗?

【问题讨论】:

  • ListView 显示什么?如果达到 EndTime 属性,应该改变什么?是否有任何绑定需要更新?
  • 您可以使用调度程序框架,例如 FluentSchedulerQuartz.NET 在特定时间调用操作。
  • @DanielW。它是一个包含会议对象 List 的列表。并且此列表绑定到 ListView 控件。因此,该列表显示了带有名称以及开始和结束时间的会议列表。并且当会议的结束时间
  • 这种情况下只需要修改List,GUI应该会自动更新。对于更新列表,请使用 mm8 中的提示。
  • 好的,会调查的。

标签: c# sql wpf refresh


【解决方案1】:

仅当您不控制该数据时,才适合在 GUI 中设置计时器 - 例如,如果您必须查询数据库表以查看其他人是否更改了它。您每分钟都在更新您的数据视图。

如果您控制该数据,则数据应该会发生变化,并且 WPF 应该能够注意到它何时发生变化。通常这只是意味着将 List<Meeting> 转换为 `Observable'。

您可以有一个每分钟触发一次的计时器,每次都检查每个会议(或者对它们进行排序,然后只检查第一个)

或者您可以为每个会议创建一个计时器,该计时器会在正确的时间触发。

或者,如果您已经对列表进行了排序,您可以设置一个计时器,在第一次会议开始时触发,然后计算出接下来的内容(如果有任何变化,请重新计算)

第一个可能最健壮,但效率最低,而最后一个则相反。

【讨论】:

  • 当您遍历一个集合并在循环内更改它时会发生这种情况。您要么需要在添加/删除项目后跳出循环,要么使用另一个集合来跟踪您想要进行的更改,并在循环完成时进行更改。 stackoverflow.com/questions/604831/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多