为WPF应用程序设置Focus OnNavigatedTo in Prism

时间:2012-08-30 06:35:07

标签: wpf xaml mvvm prism-4

我想在使用Prism的WPF应用程序中的视图之间导航,以便能够将焦点设置为特定文本框,以便用户可以执行导航,然后开始在相关文本框中键入而无需再次单击文本框。

我有一个使用Prism构建的应用程序,它有一个带有ContentControl“MainContentRegionContentControl”的Shell。然后我点击它们时顶部有一些按钮我做了region.RequestNavigate("UserControlToLoad")。在UserControl我有OnNavigatedTo,在该方法中,我致电this.MainTextBox.Focus()

以上似乎不起作用,导航似乎有效且调用了OnNavigatedTo方法,但文本框没有焦点。

我已将FocusManager.IsFocusScope="True"添加到文本框中,但这没有什么区别。

2 个答案:

答案 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