2010-06-24 80 views
16

我在畫布中加載了一個用戶控件;此默認情況下的用戶控件可見性已摺疊。當我的窗口的特定文本框被關注時,usercontrol變得可見。當用戶控件更改可見性時,將焦點放在文本框上

當usercontrol變得可見時,我想將焦點設置到usercontrol內的另一個文本框。

我試着這樣做:

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
     if (this.Visibility == Visibility.Visible) 
     {     
      FocusManager.SetFocusedElement(this, TextBlockInput); 
     } 
} 

這似乎工作,但有一個問題:文本框似乎集中,但光標移動到文本框不閃爍,我不能爲輸入類型字符。

我會在焦點後的文本框準備好輸入。我能怎麼做?

回答

31

好吧,我這樣解決:

private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
    if (this.Visibility == Visibility.Visible) 
    { 
     this.Dispatcher.BeginInvoke((Action)delegate 
     { 
      Keyboard.Focus(TextBlockInput); 
     }, DispatcherPriority.Render); 
    } 
} 

我覺得現在的問題是THA焦點調用到IsVisibleChanged在事件「範圍「...對?

+0

自從今天早上試圖解決此問題....您保存了我的晚上:-)非常感謝! ! – Cris 2011-08-04 15:31:04

1

嘗試

Keyboard.Focus(TextBlockInput); 

看到here更多細節

+0

我試過但更糟糕...與Keyboard.Focus(myTextBox)或myTextBox.Focus()似乎該文本框沒有集中......看不到光標。 – 2010-06-24 13:04:47

+0

它是一個標準的TextBox?或一些第三方控制? – 2010-06-25 05:05:17

+0

我已經發布了我的解決方案...感謝您的幫助,似乎問題是焦點調用IsVisibleChange事件 – 2010-06-25 10:10:31

0

另一個可能的解決方法是代替Visibility屬性使用Opacity。在這種情況下調用Focus()實際上設置焦點。

相關問題