您好我正在为我的Wpf应用程序使用ReactiveUI而且遇到了问题。我的主屏幕使用RouterViewHost来显示当前活动的视图。
在我的主屏幕路由到新视图后,键盘焦点移动到Mainform,我想将它移动到当前在RoutedViewHost中显示的视图内的第一个可聚焦控件。
实现这一目标的最佳方法是什么。我发现以下代码有效,但这是最好/期望的方法吗?
RoutedViewHost.TransitionCompleted += (s, e) => RoutedViewHost.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
谢谢Niek
答案 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; }
}
}