【问题标题】:WPF Binding to a non-changing propertyWPF绑定到不变的属性
【发布时间】:2009-02-12 16:24:23
【问题描述】:

我正在使用 MVVM 模式,并且我有一个带有 Start Date 属性的 POCO(在我的模型中)。

我想在 WPF 窗口/用户控件上的控件中显示自开始日期以来经过的时间...

我不知道如何将 ModelView 属性绑定到 UI 控件并让它自动更新此持续时间...谁能建议一种方法?

我可以使用某些东西(计时器或线程)来更新我的 ModelView 上的持续时间属性,但我没有看到任何其他方式,因为据我了解,UI 只会在属性值更改时更新。但是,我的 POCO 上的开始日期并没有改变,只是经过的时间在改变,这是一个计算值。

我错过了什么吗?

【问题讨论】:

    标签: wpf data-binding mvvm


    【解决方案1】:

    你在正确的轨道上。查看 Martin Fowler 页面上的 Presentation Model 模式。

    基本思想是为 UI 构建一个模型(ViewModel)并让 UI 与之同步。要在 UI 中显示的每一位信息,都应该在 ViewModel 中具有相应的字段或属性(尽管它们可能是从模型中的值检索或派生的).. ViewModel 使存储视图状态/会话状态变得容易(例如当前在 UserList 中选择的项目)在后面的 Model 类中不存在。

    由于您想在 UI 中显示“经过的时间”值,您的 ViewModel 应该有一个名为 ElapsedTimeSince 的属性。您的 WPF 视图有一个数据绑定到此属性的控件。 现在根据您的需要,确保您有一个线程/计时器事件,该事件使用当前时间和模型的 StartDate 属性定期重新评估属性值。您的 UI 应反映更新后的值。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2014-06-07
      • 2010-10-05
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多