【问题标题】:NavigationView.Loaded Method doesn't get calledNavigationView.Loaded 方法没有被调用
【发布时间】:2019-05-23 17:52:57
【问题描述】:

我正在尝试在我的 UWP 应用程序中使用导航视图。我为 Loaded、SelectionChanged 和 ItemInvoked 编写了事件。但好像无论我做什么,他们都不会被调用。

这是我在 XAML 中的导航视图

        <NavigationView x:Name="nvSample" 
                        Background="{ThemeResource NavigationViewDefaultPaneBackground}"
                        IsBackButtonVisible="Collapsed"
                        Loaded="nvTopLevelNav_Loaded"
                        SelectionChanged="nvTopLevelNav_SelectionChanged"
                        ItemInvoked="nvTopLevelNav_ItemInvoked">
            <NavigationView.MenuItems>
                <NavigationViewItem Icon="Home" Content="Home" Tag="Home" />
                <NavigationViewItem Icon="Flag" Content="Memory Palace" Tag="SamplePage2" FontFamily="Segoe UI" />
                <NavigationViewItem Icon="Accept" Content="Test Arena" Tag="SamplePage3" />
                <NavigationViewItem Icon="OtherUser" Content="Sophie" Tag="SamplePage4" />
            </NavigationView.MenuItems>
            <Frame x:Name="contentFrame" >  
            </Frame>
</NavigationView>

我像这样在 MainPage.xaml.cs 中编写了提供的方法

        private void nvTopLevelNav_Loaded(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("in method");
            // set the initial SelectedItem
            foreach (NavigationViewItemBase item in nvSample.MenuItems)
            {
                if (item is NavigationViewItem && item.Tag.ToString() == "home")
                {
                    nvSample.SelectedItem = item;
                    break;
                }
            }
            contentFrame.Navigate(typeof(nvTop.home));
            Console.WriteLine("loaded bruh");
        }

        private void nvTopLevelNav_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
        {
            contentFrame.Navigate(typeof(nvTop.memory_palace));
            Console.WriteLine("selection changed");
        }

        private void nvTopLevelNav_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
        {
            contentFrame.Navigate(typeof(nvTop.memory_palace));
            Console.WriteLine("item invoked");
        }

控制台打印仅用于调试目的。 在 ItemInvoked 和 SelectionChanged 方法中,我编写了一个示例代码来检查它们是否有效。以后我会完整的写出来。 我想我提供了所有细节。 我的问题是我的事件方法没有被调用。我该如何纠正这个错误

提前致谢

【问题讨论】:

  • 您的代码在我这边运行良好。您项目的目标和最低版本是什么?您的操作系统构建版本是什么?
  • target,min和mine都一样
  • windows 10,版本 1809,(10.0;build 17763)
  • 对不起。这也适用于我的。我认为这不起作用,因为我没有看到任何控制台消息。那么在 UWP 中 Console.writeln() 不起作用?

标签: c# xaml uwp win-universal-app


【解决方案1】:

这也适用于我的。我认为这不起作用,因为我没有看到任何控制台消息。那么在 UWP 中 Console.writeln() 不起作用?

根据您的代码 sn-p,您正在开发通用 UWP 应用。所以,答案是肯定的。如果你想在输出窗口中显示一些调试信息,你可以使用System.Diagnostics.Debug.WriteLine("something...");

有一个特殊情况可以Create a Universal Windows Platform console app。如果您对此感兴趣,可以查看该文档。

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2014-06-02
    • 2011-08-28
    • 2017-02-24
    • 2015-02-23
    • 2013-12-19
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多