我正在尝试在我的Xamarin.Forms应用程序中配置Master-Detail导航,并在Windows 10上运行我的UWP目标。
当我运行Xamarin提供的示例Master-Detail应用程序(在https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/之后),并将MasterBehavior更改为Popover时,我看到以下行为:
启动:
选择汉堡包图标:
进行选择:
在我的棱镜应用程序中,我导航到MainPage / View1:
protected override void OnInitialized()
{
InitializeComponent();
var task = NavigationService.NavigateAsync("MainPage/View1");
...
}
MainPage是我的MasterDetailPage,MasterBehavior设置为Popover,View1是ContentPage。
的MainPage:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:My.Mobile.Application.Views;assembly=My.Mobile.Application"
x:Class="My.Mobile.Application.Frame.MainPage"
MasterBehavior="Popover">
<MasterDetailPage.Master>
<views:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<views:View1 />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
视图1:
public View1()
{
NavigationPage.SetHasNavigationBar(this,false);
InitializeComponent();
}
启动时,我看不到任何导航栏,只看到View1的内容(目前只是一个红色的屏幕):
如果我将MainPage.xaml的MasterBehavior更改为Default而不是Popover,并删除View1中的SetHasNavigationBar,我会在应用启动时看到侧边菜单:
的MainPage:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:My.Mobile.Application.Views;assembly=My.Mobile.Application"
x:Class="My.Mobile.Application.Frame.MainPage"
MasterBehavior="Default">
<MasterDetailPage.Master>
<views:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<views:View1 />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
视图1:
public View1()
{
//NavigationPage.SetHasNavigationBar(this,false);
InitializeComponent();
}
当我在启动后选择MasterBehavior设置为Default时,我现在看到汉堡包菜单。
我可以在我的解决方案中添加或验证任何模仿Xamarin样本行为并将MasterBehavior设置为Popup的内容吗?
答案 0 :(得分:3)
问题在于:Production
由于您想要显示汉堡包菜单,您需要将详细信息包装在NavigationPage中。所以首先注册一个NavigationPage进行导航
var task = NavigationService.NavigateAsync("MainPage/View1");
然后将其添加到导航路径:
Container.RegisterTypeForNavigation<NavigationPage>();
此外,您可以删除MasterPage XAML中的详细标记,因为导航服务会为您构建它。
答案 1 :(得分:0)
尝试做这样的事情:
public partial class ShellView : MasterDetailPage, IMasterDetailPageOptions
{
public ShellView()
{
InitializeComponent();
}
public bool IsPresentedAfterNavigation
{
get { return Device.Idiom != TargetIdiom.Phone; }
}
}