UWP中的MasterDetailPage“ Split”

时间:2019-01-11 10:19:05

标签: xamarin.forms uwp

我正在使用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?

1 个答案:

答案 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;
}