NavigationView.Loaded 方法未被调用
NavigationView.Loaded Method doesn't get called
我正在尝试在我的 UWP 应用程序中使用导航视图。我为 Loaded、SelectionChanged 和 ItemInvoked 编写了事件。但就像 none 一样,无论我做什么,他们都会被调用。
这是我在 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 方法中,我编写了一个示例代码来检查它们是否有效。之后我会完整地写出来。
我想我提供了所有细节。
我的问题是我的事件方法没有被调用。我该如何更正错误
提前致谢
This works on mine too. I thought this isn't working because I didn't saw any Console messages. So in UWP Console.writeln() doesn't work?
根据您的代码片段,您正在开发通用 UWP 应用。所以,答案是肯定的。如果你想在输出 window 中显示一些调试信息,你可以使用 System.Diagnostics.Debug.WriteLine("something...");
.
有一种特殊情况,您可以 Create a Universal Windows Platform console app。如果你对它感兴趣,你可以看看那个文档。
我正在尝试在我的 UWP 应用程序中使用导航视图。我为 Loaded、SelectionChanged 和 ItemInvoked 编写了事件。但就像 none 一样,无论我做什么,他们都会被调用。
这是我在 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 方法中,我编写了一个示例代码来检查它们是否有效。之后我会完整地写出来。 我想我提供了所有细节。 我的问题是我的事件方法没有被调用。我该如何更正错误
提前致谢
This works on mine too. I thought this isn't working because I didn't saw any Console messages. So in UWP Console.writeln() doesn't work?
根据您的代码片段,您正在开发通用 UWP 应用。所以,答案是肯定的。如果你想在输出 window 中显示一些调试信息,你可以使用 System.Diagnostics.Debug.WriteLine("something...");
.
有一种特殊情况,您可以 Create a Universal Windows Platform console app。如果你对它感兴趣,你可以看看那个文档。