当UserControl更改可视性时,如何将焦点放在TextBox上?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

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

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

我想做到这一点:

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);
    }
}

用户回答回答于

扫码关注云+社区