2010-08-10 89 views
5

我的WPF組合框每填充一組不同的字符串,每次點擊一個按鈕。窗口上還有其他控件。組合框是窗口中的「第一個」(頂部),但文本不會突出顯示。當用戶選中控件時,文本會突出顯示,但是當它是窗口中的第一個時,它不會。如何'進入'WPF組合框PART_EditableTextbox,因爲組合框未突出顯示?

也許我需要強制單獨的文本框控件'內'組合框本身,但我怎麼會這樣做?我似乎無法在任何地方找到這種控制的內部「結構」。任何人都可以幫忙嗎?

傑克

回答

1

我不知道這是最好的解決辦法,但你可以使用FrameworkElement.FindName訪問子控件 - 它保證是存在於組合框,因爲它的一個重要組成部分控制。

這表明,是不是更好地嘗試調用控件上的.Focus()?這可能就是爲什麼當你選中時,提供的亮點。

另一種選擇是從ComboBox派生出來,並將子文本框作爲一個屬性公開,允許您設置它的選擇,或者直接向組合框添加一個方法來爲您設置它。

24

得到ComboBox的文本框,你可以使用

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

在組合框模板的創建(構造函數)是空 - 所以怎麼會一個創建過程中得到它? – Sam 2010-08-18 09:45:08

+0

^不幸的是,你不能創建它。 – Asheh 2014-11-10 10:58:15

+1

您可以覆蓋/偵聽'OnApplyTemplate' – 2015-09-01 10:43:22