我想從PreviewTextInput處理程序中創建一個新的控件並將焦點設置爲它。但即使在新控件上調用Focus()之後,光標仍然位於舊文本框中。 處理程序UserControl_PreviewTextInput在包含此文本框的UserControl上註冊(如果這很重要)。WPF:無法設置焦點
private void UserControl_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
CodeLineControl el = new CodeLineControl();
container.Children.Insert(idx+1, el);
el.innerTextBox.Focus();
}
CodeLineControl就是這樣定義(簡體):
<UserControl ..>
<DockPanel Name="codeline" Background="AntiqueWhite" >
<TextBox Name="innerTextBox"/>
</DockPanel>
</UserControl>
有沒有對焦點()一些限制蔭不是AWRE什麼?我不允許將Focus()從PreviewTextInput處理程序中的TextBox移開?我不能將焦點放在新創建的元素上嗎?
這是爲什麼這是必需的?我將新控件添加到了gui中,因此它應該是可見的和可聚焦的。 – codymanix 2009-09-08 19:48:02
我認爲它會在一個單獨的線程中異步呈現,並且在完成之前您無法專注於它。或者,可能是在添加新控件後,WPF會自行更改焦點。也許失落的焦點事件在某個時候被解僱了?你可以寫一個日誌文件來查看哪些控件獲得/失去焦點。 http://www.julmar.com/blog/mark/PermaLink,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx – 2009-09-09 16:24:51