c# - UWP 在导航视图上保存切换开关状态
问题描述
所以我有一个导航视图和一个settingspage.xaml。我的 mainwindow.xaml 看起来像这样:
<NavigationView
PaneDisplayMode="LeftCompact"
IsBackButtonVisible="Collapsed"
SelectionChanged="NavigationView_SelectionChanged"
Loaded="NavigationView_Loaded"
IsSettingsVisible="True">
<NavigationView.MenuItems>
<NavigationViewItem Content="Player" Icon="Microphone" Tag="playerview"/>
<NavigationViewItem Content="About" Icon="Contact" Tag="aboutview"/>
</NavigationView.MenuItems>
<ScrollViewer>
<Frame x:Name="ContentFrame" />
</ScrollViewer>
</NavigationView>
而cs文件只是在页面之间导航。
这是我的 SettingsPage.xaml
<Grid>
<StackPanel Margin="40,40,20,40">
<TextBlock Text="Settings" FontSize="20" />
<ToggleSwitch Margin="0,25,0,0" x:Name="SwitchPresence" Header="Discord Presence" Toggled="ToggleSwitch_Toggled"/>
</StackPanel>
</Grid>
它工作正常,但是每当我导航到其他页面并导航回设置页面时,即使我在它上面,当前状态也是关闭的。
解决方案
该行为的原因是 UWP 不会缓存 Page 对象。因此,当您导航回 SettingsPage 时,您的应用将创建一个新的 SettingsPage 实例。
要保存切换按钮的值,最简单的方法是启用 Page 类的NavigationCacheMode。启用此属性后,SettingsPage 将被缓存,您将看到切换按钮值未重置。
如果您需要在其他页面上访问此值,那么我建议您将切换按钮值直接保存在 App 类中,或者将其保存在用作数据管理器的单例类中。
推荐阅读
- c# - 列名无效实体框架列重命名
- c++ - 声明的 int 具有随机起始值
- python - 视觉工作室代码画布打开然后关闭
- c# - C#/.NET FileAccessControl 不会阻止文件写入
- java - 我正在尝试创建 crud Web 应用程序,但我收到错误 Error Creating bean with name 'sessionFactory' defined in ServletContext resource
- android - 获取关于屏幕的版本代码
- php - strpos 或 preg_match 在尝试查找末尾带有数字序列的字符串时?
- python - 使用 mysqldump 备份 0kb
- c# - 默认服务描述不能作为升级集 EnableDefaultServicesUpgrade 的一部分修改为 true
- swift - 返回视图控制器 Swift 4 时,AVFoundation Video Camera 崩溃