【发布时间】:2013-07-20 02:44:13
【问题描述】:
我有一个包含TextBox 的UserControl。当用户控件变得可见时,我给TextBox 焦点。有人可以澄清为什么我必须使用Dispatcher 来执行此操作吗?
public MyUserControl()
{
InitializeComponent();
this.IsVisibleChanged += VisibilityChanged;
}
案例 1(有效):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
this.Dispatcher.BeginInvoke((Action)delegate
{
Keyboard.Focus(this.InputTextBox);
}, DispatcherPriority.Render);
}
}
案例2(不起作用):
private void VisibilityChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.Visibility == Visibility.Visible)
{
Keyboard.Focus(InputTextBox);
}
}
【问题讨论】:
-
你有改变运行线程的代码吗?
-
当你说“不起作用”时你没有得到异常,只是InputTextBox没有得到焦点?
-
是的,我的意思是根本没有将焦点放在 TextBox 上。
标签: c# wpf user-controls textbox dispatcher