【发布时间】:2011-07-12 03:36:17
【问题描述】:
我的 silverlight 应用程序有 2 个页面,PageA 和 PageB。每个页面都绑定到它对应的 ViewModel、PageAViewModel 和 PageBViewModel。 (我在 xaml 中将 ViewModel 设置为 View 的 DataContext。)
用户可以在这些页面之间来回切换,当用户在这些页面之间切换时,他们会创建 PageA 和 PageB 的新实例,这也会创建我不想要的 ViewModel 的新对象。我尝试将NavigationCacheMode 设置为Enable,现在所有视图仅在用户第一次导航到该页面时创建实例,这也意味着 ViewModel 只有一个实例。
我想知道如何控制 UI 只创建一个 View 实例并控制何时创建其 ViewModel 的新实例?
【问题讨论】:
-
查看 Caliburn Micro。它提供了一个很好的方式来做 ViewModel first 或 View first presentation。
-
我对您的问题感到有些困惑...您想知道一般情况下如何执行此操作,或者您应该为您的特定应用程序做什么?我问是因为您似乎已经实现了您的要求。
-
@slugster:我想知道如何控制要创建的实例(视图和视图模型)的数量。现在它每次导航到该页面时都会创建新实例并调用不好的服务器(打开页面 A,它会创建新实例并调用服务器 2 次。
-
但是你说:现在所有的 Views 只在用户第一次导航到那个页面时创建实例,这也意味着 ViewModel 只有一个实例。 这没有达到你想要的吗?
-
@slugster:我只想创建一次 View 的实例,但我想控制如何创建 ViewModel 的实例,例如,PageAViewModel 每次在导航到时创建实例,但 PageBViewModel 只创建一次实例。 (我的英语不好,很抱歉让你感到困惑。)
标签: silverlight mvvm