如何"获取"WPF组合框PART_EditableTextbox,因为组合框没有突出显示?

use*_*794 5 wpf combobox focus

每次单击按钮时,我的WPF组合框都会填充一组不同的字符串.窗口上还有其他控件.组合框是窗口中的"第一个"(顶部),但文本没有突出显示.当用户通过控件进行选项卡时,文本会突出显示,但是当它是窗口中的第一个时,它不会突出显示.

也许我需要在组合框本身内的单个文本框控件上强制突出显示,但我该如何做?我似乎无法在任何地方找到此控件的内部"结构".有人可以帮忙吗?

插口

Kis*_*mar 25

获取Combobox的TextBox即可使用

TextBox TxtBox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo); 
Run Code Online (Sandbox Code Playgroud)

  • 在组合框模板的创建期间(ctor)为空 - 那么在创建过程中如何获得它? (7认同)

Dom*_*ton 1

我不确定这是最好的解决方案,但您可以使用 FrameworkElement.FindName 访问子控件 - 它保证出现在组合框中,因为它是控件的关键组成部分。

也就是说,尝试在控件上调用 .Focus() 不是更好吗?这可能就是为什么当您使用 Tab 键时,会提供突出显示的原因。

另一种选择是从 ComboBox 派生,并将子文本框公开为属性,允许您设置它的选择,或者直接向组合框添加一个方法来为您设置它。