MasterDetailPage "Сплит" в UWP - PullRequest
       6

MasterDetailPage "Сплит" в UWP

0 голосов
/ 11 января 2019

Я использую Xamarin.Forms (v. 3.4.0.1008975) для создания приложения UWP в Windows 10 (1809).

Я хотел бы создать MasterDetailPage с разделенным поведением (фиксированное навигационное меню, которое всегда видно слева, и страницы содержимого, отображаемые справа). Это задокументировано здесь .

Используя пример кода, доступного здесь , я добавил MasterBehavior = "Split" в файл XAML / MainPage.xaml в проекте MasterDetailPageNavigation:

<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 голосов
/ 14 января 2019

Пожалуйста, отметьте 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, вы можете изменить следующую строку. И удалите MasterBehavior="Popover" из xaml.

if (Device.RuntimePlatform == Device.UWP)
{
    MasterBehavior = MasterBehavior.Split;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...