我可以在ViewModel
中创建View
的实例,还是不合适?我需要它,因为Command
的{{1}}会根据MenuFlyoutItem
的内容动态更改(Button
内容取决于Button
文件)
答案 0 :(得分:2)
通常,ViewModel
生命周期有两种方法 - 单例并绑定到视图的特定实例。对于在应用的整个生命周期内与某个ViewModels
绑定的全局View
,您将创建ViewModel
的单例实例。此示例可以是应用程序根页的ViewModel
。此页面肯定只会出现在导航堆栈中一次,因此您可以安全地只使用一个实例。当用户有一种方法在导航堆栈中多次重复View
时,就会出现问题。如果您只使用ViewModel
的一个单例实例,通过导航到View
的第二个实例,您将基本上丢失与前一个实例关联的数据,并且在导航回来后您将看到不同的数据。示例是购物应用,您有产品(A),在产品视图中有相关项目列表。如果用户选择其中一个(比如产品B),则在单个ViewModel
的cas中,实例将被刷新以包含产品B的数据,并且当返回时,您将不得不手动将数据更改回产品A通过为导航堆栈中的绑定ViewModel
的每个实例提供一个View
的多个实例,您可以避免重新加载数据,例如,如果从远程服务获取数据,这可能会很昂贵,例如。您始终可以管理全局数组中的所有活动ViewModels
,并删除对不再需要的引用的引用,以便可以从内存中释放它们。