2010-08-10 23 views
5

Hộp tổ hợp WPF của tôi được điền bằng một bộ chuỗi khác nhau mỗi lần nhấp vào một nút. Ngoài ra còn có các điều khiển khác trên cửa sổ. Combobox là 'đầu tiên' (trên cùng) trong cửa sổ, nhưng văn bản không được đánh dấu. Khi người dùng duyệt qua các điều khiển, văn bản sẽ được tô sáng, nhưng khi đó là văn bản đầu tiên trên cửa sổ, thì nó không.Làm thế nào để 'nhận được' hộp kết hợp WPF PART_EditableTextbox vì combobox không được đánh dấu?

Có lẽ tôi cần phải nhấn mạnh vào điều khiển hộp văn bản riêng lẻ 'bên trong' hộp combobox, nhưng làm thế nào tôi có thể làm điều này? Tôi dường như không thể tìm thấy 'cấu trúc' bên trong của điều khiển này ở bất cứ đâu. Bất cứ ai có thể giúp đỡ ở đây?

Jack

Trả lời

1

Tôi không chắc đó là giải pháp tốt nhất, nhưng bạn có thể sử dụng FrameworkElement.FindName để truy cập kiểm soát trẻ em - nó được đảm bảo để có mặt trong một combobox, bởi vì đó là một phần cấu thành quan trọng của điều khiển.

Điều đó được nêu, có tốt hơn không khi thử và gọi hàm .Focus() trên bộ điều khiển? Đó có thể là lý do tại sao khi bạn tab, đánh dấu được cung cấp.

Một tùy chọn khác là lấy từ ComboBox và hiển thị hộp văn bản con làm thuộc tính cho phép bạn đặt lựa chọn hoặc thêm phương thức trực tiếp vào combobox để đặt cho bạn.

24

để có được những TextBox của Combobox bạn có thể sử dụng

TextBox TxtBox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo); 
+7

Trong quá trình tạo (ctor) của Template combobox là null - vậy làm thế nào người ta sẽ nhận được nó trong quá trình tạo? – Sam

+0

^Thật không may là bạn chưa thể tạo. – Asheh

+1

Bạn có thể ghi đè lên/nghe 'OnApplyTemplate' –

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