有史以来第一次从WPF切换到UWP,我发现在UWP的世界中确实存在像SplitView
和NavgiationView
这样的强大控件。
为了更新当前的家庭项目,我选择了NavigationView
控件作为我的主要UI控件,以提供各种信息。
使用页面导航(as shown here)后面的代码非常容易,但是对于我的用例,我想使用MVVM(作为学习过程,而无需使用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>
答案 0 :(得分:0)
UWP NavigationView通过MVVM切换到另一个页面
根据您的需求,您可以使用Windows Template Studio
创建包含MVVM模式和NavigationService
的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);
}