有点卡在这里。我有一个 splitview 应用程序,它在 Appx.cs 中按下后键时具有向后导航事件。
我想在 splitviews 内容页面内导航的页面之一中定义不同的操作(例如,当某个元素可见以关闭元素时)但是应用程序始终遵循 appx.cs 中设置的事件,并忽略该事件在内容框架中加载的页面中。这是 appx.cs 中的代码:
protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (Window.Current.Content == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
_rootFrame = new Frame();
_rootFrame.NavigationFailed += OnNavigationFailed;
_rootFrame.Navigated += OnNavigated;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
// Place the frame in the current Window
Window.Current.Content = new MainPage(_rootFrame);
// Register a handler for BackRequested events and set the
// visibility of the Back button
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
_rootFrame.CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if (_rootFrame != null && _rootFrame.CanGoBack)
{
e.Handled = true;
_rootFrame.GoBack();
}
}
这是加载到 splitviews 内容窗格中的页面之一中的代码:
public CalcOutputPage()
{
this.InitializeComponent();
// add page specific handling of back navigation when entering this page
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
// page specific back button navigation
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if (MobileStackPanel.Visibility == Visibility.Visible)
{
MobileStackPanel.Visibility = Visibility.Collapsed;
e.Handled = true;
}
else
{
e.Handled = false;
}
}
但这行不通。如果它的第一页加载到导航堆栈中,它就可以工作,但在所有其他时间,应用程序都遵循 appx.cs 中的导航说明
所以澄清一下:
- Appx.cs 中的 OnBackRequested 方法正在处理我的应用程序中的后退导航。
- 我在 splitview 内容窗格中打开了一个页面(我们称之为 PageTwo.xaml)。
- 在 PageTwo.xaml 中,我希望在按下 OnBackRequested 时有一个事件
- 我现在不能,因为 Appx.cs 中的那个是总是被调用的那个
- 我想知道是否有办法让 PageTwo.xaml.cs 页面中的 OnBackRequested 触发,而不是 Appx.cs 页面中的 OnBackRequested。
任何帮助,将不胜感激。我正在失去理智试图让这个工作:P