我有一個擴展器,其內容由一個StackPanel
組成,其中包含幾個元素之一,其中一個是TextBox
。無法設置元素的焦點
我想,當Expander
擴大,TextBox
應該獲得鍵盤焦點,我該怎麼做?
我想:
Private Sub xp_Expanded(sender As Object, e As RoutedEventArgs) _
Handles xpUnits.Expanded
stackPanel.Focus()
Keyboard.Focus(textBox)
textBox.Focus()
End Sub
我甚至試圖設置FocusManager.IsFocusable
和FocusManager.FocusedElement
到TextBox
,然後調用stackPanel.Focus()
,但它並沒有做的工作。
它的工作原理,但是是不是有一個更優雅的方式來做到這一點的XAML的方式,或者不必增加處理的文本框的這個IsVisible屬性? – Shimmy 2010-09-19 23:09:43
這很奇怪,爲什麼在擴展事件中tb不可見? – Shimmy 2010-09-19 23:12:52
TextBox尚不可見,因爲在「Expanded」事件處理程序運行時,TextBox仍處於可見狀態。您可以使用類似於Dispatcher.BeginInvoke(DispatcherPriority.Background,new DispatcherOperationCallback(Window1.SetFocusToTextBoxAsync),textBox);而不是IsVisibleChanged事件處理程序;'這可能會在TextBox變得可見之後運行。 – 2010-09-20 09:21:23