2010-06-24 39 views
16

Tôi có một usercontrol được tải bên trong một khung; usercontrol này mặc định có khả năng hiển thị bị sụp đổ. Khi một hộp văn bản cụ thể của cửa sổ của tôi là tập trung các usercontrol trở nên nhìn thấy được.Tập trung vào TextBox khi UserControl thay đổi Hiển thị

Khi điều khiển người dùng hiển thị, tôi muốn đặt tiêu điểm vào hộp văn bản khác bên trong usercontrol.

tôi cố gắng để làm điều đó:

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

Có vẻ như công việc nhưng có một vấn đề: hộp dường như tập trung nhưng con trỏ vào textbox không nhấp nháy và tôi không thể gõ ký tự cho đầu vào.

Tôi sẽ làm điều đó sau khi lấy nét hộp văn bản đã sẵn sàng cho đầu vào. Làm thế nào tôi có thể làm được?

Trả lời

31

Vâng, tôi giải quyết theo cách này:

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

Tôi nghĩ rằng vấn đề là tha kêu gọi tập trung vào sự kiện IsVisibleChanged "phạm vi "...đúng?

+0

Đã cố gắng giải quyết vấn đề này kể từ sáng nay .... bạn đã lưu buổi tối của mình :-) Cảm ơn rất nhiều! ! – Cris

1

thử

Keyboard.Focus(TextBlockInput); 

thấy here để biết thêm chi tiết

+0

Tôi đã thử nhưng tệ hơn ... với Keyboard.Focus (myTextBox) hoặc myTextBox.Focus() có vẻ như hộp văn bản không tập trung ... không thấy con trỏ. –

+0

là một TextBox tiêu chuẩn? hoặc kiểm soát một phần thứ ba? –

+0

Tôi đã đăng giải pháp của mình ... cảm ơn sự giúp đỡ, dường như vấn đề là cuộc gọi trọng tâm vào sự kiện IsVisibleChange –

0

Cách giải quyết khác có thể thay vì sử dụng Visibility sử dụng thuộc tính Opacity. Trong trường hợp này, gọi Focus() thực sự đặt trọng tâm.

Các vấn đề liên quan