我有Page
名为TableView
,用于在应用程序的数据库中添加/编辑/删除记录。我没有为每个模型类创建一个特定的TableView
页面,而是通过为我正在编辑的任何类型的对象传递适当的TableView
来使TableViewModel
更通用。
例如,如果我想使用Foo
个对象,我会说:
Frame.Navigate(typeof(TableView), new FooTableViewModel());
这似乎很有效,直到我开始与子实体合作。
例如,如果一个Foo
有多个Bars
,我可以使用TableView
导航到新的TableView
,其中显示所有Bar
个实体附加到选定的Foo
实体。例如:
Frame.Navigate(typeof(TableView), new BarTableViewModel(selectedFooId));
当我在查看Bar
实体时单击后退按钮返回基本Foo
实体时,会出现问题。我注意到整个页面每次都重新加载,这并不完全理想。
起初,我认为我只需要像TableView
那样设置缓存:
this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
然而,这似乎完全破坏了设置,因为缓存似乎是按类型完成的,并且只有一种TableView
页面。因此,当我尝试查看子实体并导航到具有不同视图模型的另一个TableView
时,我最终无处可去,因为已经缓存了TableView
。
作为UWP的新手,我最初只想使用一个TableView
并将其传递给不同的View Models的想法可能首先不是一个好主意。无论如何,我可以使用当前的设置,但仍然利用UWP导航和页面缓存?我应该完全以另一种方式解决这个问题吗?