Как «достать» поле со списком WPF PART_EditableTextbox, потому что поле со списком не выделено? - PullRequest
5 голосов
/ 10 августа 2010

Мой комбинированный список WPF заполняется различным набором строк при каждом нажатии кнопки.В окне есть и другие элементы управления.Поле со списком является «первым» (верхним) в окне, но текст не выделяется.Когда пользователь перемещается по элементам управления, текст ДОЛЖЕН выделяться, но когда он является первым в окне, он этого не делает.

Может быть, мне нужно принудительно выделить отдельный элемент управления текстового поля «внутри»Сам комбобокс, но как мне это сделать?Казалось, я нигде не могу найти внутреннюю «структуру» этого элемента управления.Может ли кто-нибудь помочь здесь?

Джек

Ответы [ 2 ]

25 голосов
/ 10 августа 2010

чтобы получить TextBox из Combobox вы можете использовать

TextBox TxtBox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo); 
1 голос
/ 10 августа 2010

Я не уверен, что это лучшее решение, но вы можете использовать FrameworkElement.FindName для доступа к дочернему элементу управления - он гарантированно присутствует в поле со списком, потому что это ключевая составная часть элемента управления.

Тем не менее, не лучше ли попробовать и вызвать .Focus () для элемента управления?Вероятно, поэтому, когда вы вкладываете, выделение предоставляется.

Другой вариант - это наследование от ComboBox и предоставление дочернего текстового поля в качестве свойства, позволяющего установить его выбор, или добавление метода непосредственно вполе со списком, чтобы установить его для вас.

...