我有一個UserControl
包含TextBox
。當用戶控件變得可見時,我給出了焦點TextBox
。有人可以澄清爲什麼我必須使用Dispatcher
來做到這一點嗎?爲什麼設置背後的代碼鍵盤焦點需要Dispatcher.BeginInvoke?
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);
}
}
你有更改運行線程的代碼嗎? – SWeko
當你說「不工作」,你不會得到一個異常,只是InputTextBox沒有得到重點? – Clemens
是的,我的意思是說重點不在TextBox中。 – Coder1095