Меню главной страницы Xamarin Forms

У меня есть MainPage с MasterDetailPage, я использую его для хранения элемента управления меню. Отображается меню, но я не могу перейти на новую страницу.

Нужно ли мне добавлять MasterDetailPage.Detail в homePage.xaml?

Цвет меню

MenuPage

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <StackLayout Orientation="Horizontal" Spacing="10">
        <Label VerticalOptions="Center" Text="SideDrawer" />
    </StackLayout>
    <StackLayout VerticalOptions="FillAndExpand">
        <ListView x:Name="ListViewMenu"
                HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid Padding="10">
                            <Label Text="{Binding Title}" FontSize="20"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</Grid>
public partial class MenuPage : ContentPage
{
    MainPage RootPage { get => Application.Current.MainPage as MainPage; }
    public NavigationPage Detail { get; private set; }
    List<HomeMenuItem> menuItems;
    public MenuPage ()
    {
        InitializeComponent ();
        menuItems = new List<HomeMenuItem>
        {
            new HomeMenuItem {Id = MenuItemType.Home, Title="Home" ,IconSource="Home.png", TargetType = typeof(Pages.HomePage)},
            new HomeMenuItem {Id = MenuItemType.Share, Title="Share App" ,IconSource="Home.png" ,TargetType = typeof(Pages.HomePage)},
            new HomeMenuItem {Id = MenuItemType.About, Title="About App",IconSource="Home.png",TargetType = typeof(Pages.HomePage) }
        };
        ListViewMenu.ItemsSource = menuItems;
        ListViewMenu.ItemSelected += OnItemSelected;
    }
    void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var item = e.SelectedItem as HomeMenuItem;
        if (item != null)
        {
            //This will create instance of the page using the parameterized constructor you defined in each DetailPages
            Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
        }
    }
}

person Community    schedule 28.02.2019    source источник
comment
вы назначаете локальную переменную с именем Detail, это НЕ то же самое, что свойство Detail вашей страницы MasterDetail.   -  person Jason    schedule 28.02.2019


Ответы (1)


Вам нужна страница, унаследованная от MasterDetailPage. Это даст вам свойство Подробности для правильной настройки и навигации.

Я бы посоветовал вам следовать этому руководству!

Xamarin.Forms Master-Detail Страница

person TaylorD    schedule 28.02.2019
comment
есть ли способ изменить цвет и добавить текст? - person ; 01.03.2019
comment
Что вы хотите изменить цвет? - person TaylorD; 01.03.2019
comment
К сожалению, изображение не опубликовано, я хотел изменить цвет меню и добавить заголовок? - person ; 01.03.2019
comment
На главной (выдвижной) странице, которая включает ваш ListView со страницами для выбора, может быть любой вид полосы или текста на нем, который вы хотите. Просто измените MasterPageCS.xaml, который используется в примере. Он содержит стек, в который вы можете легко добавлять другие элементы управления. - person TaylorD; 01.03.2019