当 UserControl 更改可见性时聚焦于 TextBox

2024-01-02

我在画布内加载了一个用户控件;默认情况下,此用户控件的可见性已折叠。当我的窗口的特定文本框聚焦时,用户控件变得可见。

当用户控件变得可见时,我想将焦点设置到用户控件内的另一个文本框。

我尝试这样做:

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
        if (this.Visibility == Visibility.Visible)
        {                
            FocusManager.SetFocusedElement(this, TextBlockInput);
        }
}

这似乎有效,但有一个问题:文本框似乎已聚焦,但文本框中的光标不闪烁,并且我无法键入字符进行输入。

我希望焦点之后文本框就可以输入了。我能怎么做?


嗯,我是这样解决的:

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    if (this.Visibility == Visibility.Visible)
    {
        this.Dispatcher.BeginInvoke((Action)delegate
        {
            Keyboard.Focus(TextBlockInput);
        }, DispatcherPriority.Render);
    }
}

我认为问题在于焦点调用 IsVisibleChanged 事件“范围”......对吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 UserControl 更改可见性时聚焦于 TextBox 的相关文章

随机推荐