【发布时间】:2020-06-14 16:10:23
【问题描述】:
我正在构建我的第一个完整的 Xamarin.Forms 应用程序,并试图弄清楚如何在导航之间保持用户输入。在网上做了一些搜索后,我读到默认行为是每次导航时完全重新加载页面,但是您可以通过将 NavigationCacheMode 设置为 true 或 required 来更改默认行为,但我尝试设置此属性在 xaml 和 C# 中都没有成功 - 似乎无法识别该属性。
有没有一种简单的方法可以让用户在页面之间导航时输入不会消失?如果有人能告诉我如何设置 NavigationCacheMode 那就太好了,但我也愿意接受任何合理的解决方案,以防止用户输入在导航期间消失。
其他详细信息:我的应用有一个 UWP 和 Android 项目。我正在使用主详细信息页面进行导航。这是我的 MenuList_ItemSelected 事件处理程序:
private void MenuList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = (MenuItem)e.SelectedItem;
var title = item.Title;
var page = (Page)Activator.CreateInstance(item.TargetType);
Detail = new NavigationPage(page); //TODO: when menu item is clicked and you're already on that page, the menu should just slide back. (currently it does nothing and stays out).
IsPresented = false;
}
【问题讨论】:
-
我从来没有遇到过这个问题。你是在什么平台上体验的?
-
@Jason 我会在问题中添加一些额外的细节
-
当您说“导航”时,您的意思是从菜单中选择一个项目并调用 MenuList_ItemSelected?还是别的什么?
-
是的,在主详细信息页面上点击/单击菜单上的项目后导航到另一个页面(也称为视图)。这会触发设置 Detail = new NavigationPage 的 MenuList_ItemSelected 事件处理程序
-
每次你都在创建一个新的页面实例——所以用户输入当然会丢失
标签: c# xaml xamarin.forms