2010-08-10 100 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