2

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

我有一个用 Prism 构建的应用程序,它有一个带有ContentControl“MainContentRegionContentControl”的外壳。然后,我在顶部有一些按钮,点击它们时我会执行region.RequestNavigate("UserControlToLoad"). 在UserControl我有OnNavigatedToand 在我调用的那个方法中this.MainTextBox.Focus()

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

我已经添加FocusManager.IsFocusScope="True"到文本框中,但这并没有什么不同。

4

2 回答 2

4

对每个页面使用Loaded()方法,而不是OnNavigatedTo()然后TextBox.Focus()将正常工作;)

于 2012-12-24T09:42:59.590 回答
0

尝试以下操作...在您的视图中实施 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 变为 true 时,尝试将焦点设置为您想要关注的 TextBox

于 2012-10-19T18:21:20.243 回答