C# UWP NavigationView通过MVVM切换到另一个页面

C# UWP NavigationView通过MVVM切换到另一个页面,c#,mvvm,uwp,navigationview,navigationservice,C#,Mvvm,Uwp,Navigationview,Navigationservice,第一次从WPF切换到UWP,我发现在UWP的世界中确实存在像SplitView和NavgiationView这样的强大控制 为了更新我当前的家庭项目,我选择了NavigationView控件作为我的主UI控件,以提供各种信息。 使用页面导航()背后的代码非常简单,但是对于我的用例,我希望使用MVVM(作为一个学习过程,而不使用像MVVMLIght或类似的FWs) 目前,我的NavigationView如下所示;但我不知道如何在框架内通过页面进行更改(据我所知,我必须使用导航服务,但还没有找到一个

第一次从WPF切换到UWP,我发现在UWP的世界中确实存在像
SplitView
NavgiationView
这样的强大控制

为了更新我当前的家庭项目,我选择了
NavigationView
控件作为我的主UI控件,以提供各种信息。 使用页面导航()背后的代码非常简单,但是对于我的用例,我希望使用MVVM(作为一个学习过程,而不使用像MVVMLIght或类似的FWs)

目前,我的
NavigationView
如下所示;但我不知道如何在框架内通过页面进行更改(据我所知,我必须使用
导航服务
,但还没有找到一个易于理解的示例):


UWP NavigationView通过MVVM切换到另一个页面

根据您的需求,您可以使用创建包含MVVM模式和导航服务的UWP项目

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);
}
private void-minvoke(NavigationViewItemInvokedEventArgs)
{
if(args.issettings已调用)
{
NavigationService.Navigate(typeof(SettingsViewModel.FullName);
返回;
}
var item=\u navigationView.MenuItems
第()类
.First(menuItem=>(string)menuItem.Content==(string)args.InvokedItem);
var pageKey=item.GetValue(NavHelper.NavigateToProperty)作为字符串;
导航服务。导航(pageKey);
}

我必须承认这是解决方案,但代码并不是真正不言自明的。它使用“ActionServices”,这对我来说是全新的。不过还是谢谢你
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);
}