UWP NavigationView, вложенный в ContentFrame - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблема с созданием второго экземпляра NavigationView в моем проекте.Я активно использовал AppUIBasics, изучая UWP, и заметил, что он имеет NavigationView, вложенные во фреймы, как показано в этом примере:

enter image description here

Мне не удалосьповторить это.

Мой пример использования следующий:

  • Я загружаю программу, она создает основной 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;
                }
            }
        }
    }

Если я исключил слишком много информации, пожалуйста, дайте мне знать.Я добавлю его обратно. Если что-то требует дальнейших разъяснений, пожалуйста, дайте мне знать.

...