我想在使用Prism的WPF应用程序中的视图之间导航,以便能够将焦点设置为特定文本框,以便用户可以执行导航,然后开始在相关文本框中键入而无需再次单击文本框。
我有一个使用Prism构建的应用程序,它有一个带有ContentControl
“MainContentRegionContentControl”的Shell。然后我点击它们时顶部有一些按钮我做了region.RequestNavigate("UserControlToLoad")
。在UserControl
我有OnNavigatedTo
,在该方法中,我致电this.MainTextBox.Focus()
。
以上似乎不起作用,导航似乎有效且调用了OnNavigatedTo
方法,但文本框没有焦点。
我已将FocusManager.IsFocusScope="True"
添加到文本框中,但这没有什么区别。
答案 0 :(得分:4)
对每个页面使用Loaded()
方法而不是OnNavigatedTo()
,TextBox.Focus()
可以正常工作;)
答案 1 :(得分:0)
尝试以下操作...在您的View工具IActiveAware
中class ViewModel : IActiveAware
{
#region IActiveAware Members
private bool isActive = false;
public bool IsActive
{
get
{
return isActive;
}
set
{
if (value != isActive)
{
isActive = value;
OnIsActiveChanged(EventArgs.Empty);
}
}
}
public event EventHandler IsActiveChanged = delegate { };
protected virtual void OnIsActiveChanged(EventArgs args)
{
IsActiveChanged(this, args);
}
#endregion
}
OnIsActiveChanged
,尝试将焦点设置为当IsActive变为真时您想要关注的TextBox