我正在使用Xamarin.Forms(v。3.4.0.1008975)在Windows 10(1809)上构建UWP应用。
我想创建一个具有拆分行为的MasterDetailPage(固定的导航菜单始终在左侧可见,而内容页面在右侧显示)。已记录在here中。
使用示例代码here,我已将MasterBehavior =“ Split”添加到MasterDetailPageNavigation项目的XAML / MainPage.xaml文件中:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MasterDetailPageNavigation;assembly=MasterDetailPageNavigation"
x:Class="MasterDetailPageNavigation.MainPage"
MasterBehavior="Split">
我希望在左侧看到一个固定的导航菜单,并在右侧显示一个内容页面。但是,生成的UWP应用会继续显示“ Popover”行为(菜单在内容页面上来回滑动)。
如何获得带有固定(固定)菜单的MasterDetailPage?
答案 0 :(得分:2)
请检查提供的示例中的MainPage
代码。 MasterBehavior
是在MainPage
构造函数中设置的。并且将在 Xaml 初始化后调用它。因此,将涵盖Split
行为。
public partial class MainPage : MasterDetailPage
{
public MainPage()
{
InitializeComponent();
masterPage.listView.ItemSelected += OnItemSelected;
if (Device.RuntimePlatform == Device.UWP)
{
MasterBehavior = MasterBehavior.Popover;
}
}
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null)
{
Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
masterPage.listView.SelectedItem = null;
IsPresented = false;
}
}
}
如果您想使用Split
行为,则可以修改以下行。然后从xaml中删除MasterBehavior="Popover"
。
if (Device.RuntimePlatform == Device.UWP)
{
MasterBehavior = MasterBehavior.Split;
}