H.B*_*.B. 15 data-binding wpf time notifications dependencies
前段时间我写了一个类似小部件的小应用程序,它应该跟踪任务,每个任务都有一个指定为a的截止日期DateTime,现在如果你想显示剩下多少时间,直到你可能想要绑定到a的最后期限"virtual"(*curses virtual关键字*)属性如下:
public TimeSpan TimeLeft
{
get { return Deadline - DateTime.Now; }
}
Run Code Online (Sandbox Code Playgroud)
显然,理论上这个属性会改变每个刻度,并且您希望不时地更新UI(例如,通过定期PropertyChanged为该属性抽出事件).
回到我写小部件时,我每分钟刷新整个任务列表,但这并不理想,因为如果用户与某个项目交互(例如通过键入绑定到Comments-property 的TextBox )将会严厉地中断并更新到来源迷路了.
那么,如果你有这样的时间依赖属性,那么更新UI的最佳方法是什么?
(顺便提一下,我不再使用那个应用了,只是觉得这是一个非常有趣的问题)
我认为您在代码示例之后的第一段中所说的内容是在 WPF 中实现此功能的唯一合理方法。设置一个只调用PropertyChanged该TimeLeft属性的计时器。间隔时间会根据您的情况而有所不同(如果您正在讨论每周的任务列表,您可能只需要每 5 分钟左右更新一次。如果您正在讨论接下来 30 分钟的任务列表,您可能需要每分钟或 30 秒更新一次。
该方法可以避免您提到的刷新选项问题,因为只有TimeLeft绑定会受到影响。如果您有数百万个这样的任务,我想性能损失将非常显着。但是,如果您只有几十个左右,那么每 30 秒左右更新一次这些绑定将是一个相当微不足道的问题,对吧?
我能想到的每一种可能性都使用计时器或动画。当您将任务添加到列表时,动画会太“重”。在 Timer 场景中,上面的场景似乎是最干净、最简单、最实用的。可能只是取决于它是否适用于您的特定场景。
| 归档时间: |
|
| 查看次数: |
1371 次 |
| 最近记录: |