【发布时间】:2013-04-12 18:36:11
【问题描述】:
所以,我有几个页面,每个页面上有几个用户控件。其中一个 UC 出现在每个页面上,并在其构造函数中从 DataService(用作信息存储)中获取信息。
在页面之间切换时,UC 的 ViewModel 构造函数不会被调用,因此它不会从 DataService 更新信息。在创建第一页期间调用一次。
有什么想法吗?我应该只创建一个方法,然后从代码隐藏中调用它吗?或者我可以以某种方式将视图模型的字段绑定到 DataService?
【问题讨论】:
-
第一次导航到第二页时是否调用了构造函数?应该是,因为当时正在创建 UC,但是当您导航回第一页时,该页面被缓存,因此不调用构造函数。每次导航到页面时都会引发 OnNavigateTo,即使它已被缓存。
-
@igrali 稍微编辑了问题。我的意思是,UC 的 ViewModel 只被调用一次。我应该从每个页面的 OnNavigateTo() 调用 UC.Refresh() 吗?
-
ViewModel 构造函数被调用一次取决于您在哪里创建 VM。如果您在 UC 构造函数或 XAML 中创建它,它会被创建一次,然后被缓存,因此当您返回旧页面时,它不会重新创建。如果你想每次都刷新视图,你应该考虑从 OnNavigatedTo 调用某种刷新方法。只注意刷新不会被调用两次——在构造函数和 OnNavigatedTo 中都
-
@igrali hm.. 也许我应该做一个 UC 事件,并在加载新页面后提出它?我只想让它保持自动化。
-
对你有用的! :)
标签: windows-phone-7 mvvm-light