WPF绑定到不变的属性

时间:2009-02-12 16:24:24

标签: wpf data-binding mvvm

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

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

我没有看到如何将ModelView属性绑定到UI控件并让它自动更新此持续时间......有人可以建议吗?

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

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

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

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