UWP NavigationView переключиться на другую страницу через MVVM - PullRequest
0 голосов
/ 18 октября 2018

Впервые переключившись с WPF на UWP, я обнаружил, что в мире UWP существуют отличные элементы управления, такие как SplitView и NavgiationView.

Для обновления моего текущего домашнего проектаЯ выбрал элемент управления NavigationView в качестве основного элемента управления пользовательским интерфейсом для предоставления различной информации.Использовать кодовую навигацию по страницам (, как показано здесь ) очень просто, но для моего случая использования я хочу работать с MVVM (в качестве процедуры обучения без использования FW, таких как MVVMLIght или аналогичных).

В настоящее время мой NavigationView выглядит так;но у меня нет правильного представления о том, как менять внутри фрейма страницы (насколько я понимаю, мне приходится использовать NavigationService, но я не нашел простого примера этого):

<NavigationView x:Name="nvTopLevelNav" Grid.Column="0" Grid.Row="1" Grid.RowSpan="3" IsPaneOpen="False"  IsPaneToggleButtonVisible="False" CompactModeThresholdWidth="0" IsBackButtonVisible="Collapsed" Background="Black" Foreground="Black"
        Loaded="nvTopLevelNav_Loaded"
        Margin="0,12,0,0"
        SelectionChanged="nvTopLevelNav_SelectionChanged"
        ItemInvoked="nvTopLevelNav_ItemInvoked"
        IsTabStop="False"
                IsSettingsVisible="False"
                AlwaysShowHeader="False"
        Header="asdasdaasdasdasd">
    <NavigationView.MenuItems>
        <NavigationViewItem Icon="Home" Content="Home" Tag="Home_Page" />
        <NavigationViewItem Icon="Globe" Content="Weather" Tag="Weather_Page" />
        <NavigationViewItem Content="My Agenda" Tag="Agenda_Page">
    <!-- some custom PathIcon -->
        </NavigationViewItem>
        <NavigationViewItem Icon="Contact" Content="My News" Tag="News_Page" />
    </NavigationView.MenuItems>
    <Frame x:Name="contentFrame"></Frame>
</NavigationView>

1 Ответ

0 голосов
/ 18 октября 2018

UWP NavigationView переключается на другую страницу через MVVM

Для вашего требования вы можете использовать Windows Template Studio для создания проекта UWP, который содержит шаблон MVVM и NavigationService.

private void OnItemInvoked(NavigationViewItemInvokedEventArgs args)
{
    if (args.IsSettingsInvoked)
    {
        NavigationService.Navigate(typeof(SettingsViewModel).FullName);
        return;
    }

    var item = _navigationView.MenuItems
                    .OfType<NavigationViewItem>()
                    .First(menuItem => (string)menuItem.Content == (string)args.InvokedItem);
    var pageKey = item.GetValue(NavHelper.NavigateToProperty) as string;
    NavigationService.Navigate(pageKey);
}

enter image description here

...