Навигация в UWP приложениях

231
16 октября 2018, 07:10

Допустим, у меня есть NavigationView с некоторым числом item-ов и Frame Как мне сделать так, чтобы менялось отображение только в Frame? В инете нашёл только Frame.Navigate() , но он просто "переносит" на новое окно, в результате чего пропадает NavigationView

Дополнение

Вот xaml-код MainPage:

<Page
x:Name="mainPage"
x:Class="LangLayoutAssist.Pages.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource SystemControlAcrylicWindowBrush}">
<Grid>
    <NavigationView x:Name="menu" IsSettingsVisible="False" IsBackButtonVisible="Collapsed" ItemInvoked="NavigationView_ItemInvoked">
        <NavigationView.MenuItems>
            <NavigationViewItemHeader>Language Layout Assistant</NavigationViewItemHeader>
            <NavigationViewItem Tag="Home" Icon="Home">Главная страница</NavigationViewItem>
            <NavigationViewItem Tag="Settings" Icon="Setting">Настройки</NavigationViewItem>
            <NavigationViewItem Tag="Reference" Icon="Help">Справка</NavigationViewItem>
        </NavigationView.MenuItems>
    </NavigationView>
    <Frame x:Name="frame">
    </Frame>
</Grid>

Вот реализация события ItemInvoked:

private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
    {
        switch (args.InvokedItemContainer.Tag.ToString())
        {
            case "Home":
                frame.Navigate(typeof(MainPageBP));
                break;
            case "Settings":
                frame.Navigate(typeof(SettingsBP));
                break;
            case "Reference":
                frame.Navigate(typeof(ReferenceBP));
                break;
            default:
                throw new Exception("Page not found");
        }
    }

Остальные страницы пустые, ничего в них не менял. Если код костыльный (меня смущает использование в switch-case литералов), то извините, я не знаю, как такое принято делать, учусь.

Answer 1

Frame необходимо поместить внутрь NavigationView

READ ALSO
Заменить строки в txt

Заменить строки в txt

Формат txt файла:

286
Анимированные иконки в Xamarin.Froms

Анимированные иконки в Xamarin.Froms

В проекте на XamarinForms при переходе со страницы на страницу требуется отображать белый экран и анимированную иконку загрузки (loading, а-ля ajax - вращающиеся...

216
Использование 360 веб-камеры в Unity

Использование 360 веб-камеры в Unity

Недавно обзавёлся 360-камерой с двумя объективамиХочу транслировать изображение с неё в Unity

206
роутинг web api - ошибка по сопоставления маршрутов

роутинг web api - ошибка по сопоставления маршрутов

Продолжаю эпопею с роутингом

196