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 があります。TextBox がフォーカスされている場合、ALT + 左矢印キーを使用して Page1 に戻ることができます。この動作を無効にするにはどうすればよいですか?
フレームコントロールと TextBox-Control で KeyboardNavigation.DirectionalNavigation="None" を設定しようとしましたが、成功しませんでした。