我正在构建一个UWP应用程序,导航就像这样 - 你从Page1开始,它有一个导航选项列表。 Page1创建一个viewmodel对象将一些标识参数集,并将其传递给Page2,它覆盖OnNavigatedTo以将viewmodel设置为其属性之一,并调用内部方法来填充viewmodel的数据。
第一次导航到页面时,所有这些都有效。传入视图模型,设置数据,并正确显示所有内容。但是,当我导航到第1页然后使用不同的参数转到第2页时,似乎内部视图模型发生了更改,但显示不能准确反映这些更改。 viewmodel及其属性正确实现了INotifyPropertyChanged。
我们发现Page2将NavigationCacheMode设置为Enabled。当我们禁用导航缓存时,页面按预期更改。基于此,似乎当我们更改OnNavigatedTo方法中的数据时,我们的更改最终会被从缓存中提取的数据覆盖?这是正确的,如果是这样,我们应该在其他地方填充我们的viewmodel以避免这种情况吗?或者我们应该只检查页面的参数是否已更改并有条件地清除缓存以强制完全重新加载?