如何在ReactiveUI路由后将键盘焦点移动到视图

时间:2016-07-14 20:14:06

标签: wpf reactiveui

您好我正在为我的Wpf应用程序使用ReactiveUI而且遇到了问题。我的主屏幕使用RouterViewHost来显示当前活动的视图。

在我的主屏幕路由到新视图后,键盘焦点移动到Mainform,我想将它移动到当前在RoutedViewHost中显示的视图内的第一个可聚焦控件。

实现这一目标的最佳方法是什么。我发现以下代码有效,但这是最好/期望的方法吗?

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

谢谢Niek

1 个答案:

答案 0 :(得分: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; }
    }
}