Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 用于Xamarin表单的Prism-从选项卡页面导航_Xamarin.forms_Prism - Fatal编程技术网

Xamarin.forms 用于Xamarin表单的Prism-从选项卡页面导航

Xamarin.forms 用于Xamarin表单的Prism-从选项卡页面导航,xamarin.forms,prism,Xamarin.forms,Prism,(使用Prism 6.1.0-pre6和XF 2.3.0.107) 摘要:从选项卡页导航到内容页时,不会显示工具栏/操作栏 我从另一个页面导航到选项卡页面(MainPage.xaml)。这看起来像这样: <TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:

(使用Prism 6.1.0-pre6和XF 2.3.0.107)

摘要:从选项卡页导航到内容页时,不会显示工具栏/操作栏

我从另一个页面导航到选项卡页面(MainPage.xaml)。这看起来像这样:

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Or.Console.Views"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             x:Class="Or.Console.Views.MainPage">
  <local:APage/>
  <local:BPage/>
  <local:CPage/>
</TabbedPage>
DetailsPage只是一个ContentPage,我希望它会在顶部显示back按钮和操作栏,但它不是

我猜这是因为Prism不知道tab子页面,只知道TabbedPage本身

我试着用Prism注册tab子页面,但这似乎不起作用。还尝试将每个选项卡子项包装到NavigationPage中,但这会导致重复工具栏出现一些奇怪的行为

从选项卡式内容中导航的正确方式是什么

编辑: 作为对Brian Lagunas回答的回应,我尝试将选项卡页面包装在NavigationPage中,所以当我导航到它时,我会打电话给它

 _navigationService.NavigateAsync("DeviceNavWrapper/MainPage");
但这带来了一个奇怪的结果:

EDIT2:在我的案例中,解决方案是我需要在useModalNavigation设置为false的情况下从APage调用NavigateAsync。所以现在APage有这样一个功能:

_navigationService.NavigateAsync("DetailsPage", null, false);

在顶部获得“后退”按钮的唯一方法是将页面嵌套在NavigationPage中。这是标准的Xamarin。形成行为。所以你有两个选择。一种是将您的页面包装在导航页面中。然后,当您从APageViewModel调用NavigateAsync(“DetailsPage”)时,它将按照您的需要工作


编辑:如果要导航到完全不同的页面并替换选项卡页面,请确保将选项卡页面包装在导航页面中,然后从选项卡页面视图模型进行导航。

为了消除重复的工具栏,我发现设置

   NavigationPage.HasNavigationBar="False"

导航页面包装器的简化版

感谢Brian的回复(以及您在Prism XF上所做的出色工作)。是的,这正是我想要的——替换选项卡页面。我遇到的问题是,在NavigationPage中包装TabbedPage(MainPage)会使其显示为双工具栏。我得到了汉堡包和它下面的后退按钮,还有重复的动作按钮。我在哪里出错了吗?我想我的标签页肯定已经在堆栈的前面被包装在导航页中了,所以复制了。我最终在APage中的控件中对TabbedPage进行了导航调用,并且成功了!现在我必须弄清楚如何将命令从APage上的控件绑定到父选项卡页。这似乎是可行的,但并不可取。。不知道我们是否会看到Prism或XF的增强功能,使其更干净?我可以肯定地看到这将是有用的。目前只考虑了模态导航。例如,如果您从一个页面进行模式导航,它可以工作(替换tabbedPage),但没有真正考虑在NaviagionPage中导航。这可能有点棘手,但让我想想。啊!这正是我所需要的。如果我只是在useModalNavigation标志设置为false的情况下导航,我将获得后退按钮和所需的行为。直到你提到它,我才去找过它。非常感谢,太好了!我很高兴这么简单。谢谢你,艾琳,这解决了我的问题
   NavigationPage.HasNavigationBar="False"