windows 有没有一种方法可以从WinUI 3中的Frame访问缓存页面

8dtrkrch  于 7个月前  发布在  Windows
关注(0)|答案(1)|浏览(89)

我有一个应用程序,它使用导航视图在4个页面之间切换,其中2个页面保存数据,这些页面由一个Frame缓存。我正在实现一个保存函数,它从这两个“数据页面”中提取数据,但我不知道如何从Frame访问缓存的页面示例。
我尝试手动将页面示例存储在主窗口类的私有字段中,但这不起作用。

siotufzp

siotufzp1#

这样做的模式是使用MVVM并使用ViewModel来管理视图(页面)的数据。其中一个原因(除了MVVM的常见原因之外)是WinUI导航在每次导航时都会创建一个新的页面示例。
如果你使用MVVM,ViewModel的创建是你的责任,你可以选择有一个视图模型的示例,它将在导航中保持视图的数据持久化。
如果出于某种原因,您不喜欢或不能使用MVVM,那么还有另一种备用模式,即服务。(WinUI为此提供了一个事件Navigated)。在这种情况下,当您导航到页面中加载数据并设置表示时,您将使用页面中的服务示例(通常来自DI)。
注意,总是有存储数据的选项,正如你提到的,在框架级别,并通过子->父关系在页面和它们的框架之间创建依赖关系,但这种方法真的很难看,在XAML树中不直观,绝对不推荐。视图/页面不应该知道谁包含它。

相关问题