我以 mvvm 方式启动了一个 WPF 应用程序。主窗口包含一个框架控件,用于浏览不同的页面。为此,我现在使用一个简单的 NavigationService:
public class NavigationService : INavigationService
{
private Frame _mainFrame;
#region INavigationService Member
public event NavigatingCancelEventHandler Navigating;
public void NavigateTo(Uri uri)
{
if(EnsureMainFrame())
{
_mainFrame.Navigate(uri);
}
}
public void GoBack()
{
if(EnsureMainFrame() && _mainFrame.CanGoBack)
{
_mainFrame.GoBack();
}
}
#endregion
private bool EnsureMainFrame()
{
if(_mainFrame != null)
{
return true;
}
var mainWindow = (System.Windows.Application.Current.MainWindow as MainWindow);
if(mainWindow != null)
{
_mainFrame = mainWindow.NavigationFrame;
if(_mainFrame != null)
{
// Could be null if the app runs inside a design tool
_mainFrame.Navigating += (s, e) =>
{
if (Navigating != null)
{
Navigating(s, e);
}
};
return true;
}
}
return false;
}
}
在 Page1 上,按下按钮会使用 NavigationService 强制导航到 Page2。在 Page2 上有一个文本框。如果 TextBox 聚焦,我可以使用 ALT + 左箭头键导航回 Page1。如何禁用此行为?
我尝试在框架控件和 TextBox-Control 中设置 KeyboardNavigation.DirectionalNavigation="None" ,但没有成功。