2016-07-14 9 views
1

こんにちは私はWpfアプリケーションにReactiveUIを使用していますが、問題が発生しています。私のメイン画面は、現在アクティブなビューを表示するためにRouterViewHostを使用します。ReactiveUIルーティング後にキーボードフォーカスをビューに移動するには

私のメイン画面のルートを新しいビューに移動した後、キーボードフォーカスがメインフォームに移動し、それを現在RoutedViewHostに表示されているビュー内の最初のフォーカス可能なコントロールに移動したいと思います。

これを達成する最良の方法は何ですか。私は、次のコードが動作することがわかったが、これを行うには最高の/望ましい方法ですか?

 RoutedViewHost.TransitionCompleted += (s, e) => RoutedViewHost.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 

Niek

答えて

2

おかげで私は、ルーティングに組み込まれて使用していないが、あなたは背後にあるビューのコードでthis.WhenActivatedを使用することができますか?

public partial class FooView : UserControl, IViewFor<FooViewModel> 
{ 
    public FooView() 
    { 
     InitializeComponent(); 

     this.WhenActivated(d => 
     { 
      SomeTextField.Focus(); 
     }); 
    } 

    public FooViewModel ViewModel 
    { 
     get { return (FooViewModel) GetValue(ViewModelProperty); } 
     set { SetValue(ViewModelProperty, value); } 
    } 

    public static readonly DependencyProperty ViewModelProperty = 
     DependencyProperty.Register("ViewModel", typeof(FooViewModel), typeof(FooView), new PropertyMetadata(null)); 

    object IViewFor.ViewModel 
    { 
     get { return ViewModel; } 
     set { ViewModel = (FooViewModel) value; } 
    } 
} 
関連する問題