У меня проблема с созданием второго экземпляра NavigationView в моем проекте.Я активно использовал AppUIBasics, изучая UWP, и заметил, что он имеет NavigationView, вложенные во фреймы, как показано в этом примере:
Мне не удалосьповторить это.
Мой пример использования следующий:
- Я загружаю программу, она создает основной NavView с левой стороны
- Я нажимаюsettings AppBarButton, который изменяет основной вид навигации ContentFrame на страницу SettingsPage.xaml
- SettingsPage имеет Top NavigationView, который позволяет мне переключаться между различными настройками, но в данный момент не отображается при запуске.
Идентификатор не генерирует синтаксические ошибки или ошибки XAML, но я не совсем уверен, что происходит. Я выбрал то, что считаю полезным:
Навигация по главной странице XAML
<!-- Navigation view Variable decleration -->
<NavigationView IsSettingsVisible="False"
PaneTitle="Menu"
x:Name="NavView"
Loaded="NavView_Loaded"
IsBackButtonVisible="Collapsed"
PaneDisplayMode="Left"
PaneClosed="NavView_PaneClosed"
AlwaysShowHeader="True"
SelectionChanged="NavView_SelectionChanged" Foreground="{StaticResource DefaultTextColour}">
<!-- All navigation view Items nested within here -->
<NavigationView.MenuItems>
// Removed un-necessary menuitems here
</NavigationView.MenuItems>
<!-- Navigation pane footer -->
<NavigationView.PaneFooter>
<StackPanel Orientation="Vertical" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal" x:Name="AppBarButtons" Tag="AppBarButtonPanel" Visibility="{Binding ElementName=NavView, Path=IsPaneOpen}" Margin="16,0,16,0" Height="50">
// THIS IS THE NAVIGATION TO THE SETTINGS PAGE
<AppBarButton Icon="Setting" Margin="1, 2, 0, 0" Tag="Settings_Page" HorizontalAlignment="Center" Width="56.5" Height="40.5" ClickMode="Press" Click="SettingsButton_Click" ToolTipService.ToolTip="Budget Settings"/>
</StackPanel>
</StackPanel>
</NavigationView.PaneFooter>
<!-- Defining the ContentFrame Transition effect-->
<Frame x:Name="ContentFrame">
Навигация по главной странице XAML (только кнопка Settings)
// BUTTON CLICK HANDLERS HERE
private void SettingsButton_Click(object sender, RoutedEventArgs e)
{
ContentFrame.Navigate(typeof(Content_Pages.SettingsPage));
NavView.IsPaneOpen = false;
}
Settings_Page XAML
<Grid>
<muxcontrols:NavigationView PaneDisplayMode="Top"
IsBackButtonVisible="Collapsed"
IsSettingsVisible="False"
x:Name="SettingNavView"
SelectionChanged="SettingNavView_SelectionChanged"
Foreground="{StaticResource DefaultTextColour}"
Grid.Row="0">
<NavigationView.MenuItems>
<NavigationViewItem Content="File Properties" x:Name="FileProperties" Tag="FileProperties_Page"/>
<NavigationViewItem Content="UI Customisation" x:Name="UICustomisation" Tag="UICustomisation_Page"/>
</NavigationView.MenuItems>
</muxcontrols:NavigationView>
<Frame x:Name="SettingsContent"/>
</Grid>
SettingsPКод возраста:
public sealed partial class SettingsPage : Page
{
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// Navigate to the Home Page
Frame.Navigate(typeof(Content_Pages.SettingsPageContent.FileProperties_Page));
}
private void SettingNavView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
NavigationViewItem item = args.SelectedItem as NavigationViewItem;
if(item != null)
{
switch (item.Tag.ToString())
{
case "FileProperties_Page":
SettingsContent.Navigate(typeof(Content_Pages.SettingsPageContent.FileProperties_Page));
break;
case "UICustomisation_Page":
SettingsContent.Navigate(typeof(Content_Pages.SettingsPageContent.UICustomisation_Page));
break;
}
}
}
}
Если я исключил слишком много информации, пожалуйста, дайте мне знать.Я добавлю его обратно. Если что-то требует дальнейших разъяснений, пожалуйста, дайте мне знать.