Вам необходимо получить элемент управления PART_EditableTextBox
из шаблона элемента управления поля со списком.Самый простой способ сделать это - переопределить OnApplyTemplate
в производной ComboBox
, а затем использовать эту производную везде, где вам нужен комбинированный список с таким расширенным поведением.
protected void override OnApplyTemplate()
{
var myTextBox = GetTemplateChild("PART_EditableTextBox") as TextBox;
if (myTextBox != null)
{
this.editableTextBox = myTextBox;
}
}
Когда у вас есть текстовое поле, вы можете установить позицию каретки, установите SelectionStart
в место, где вы хотите, чтобы каретка появилась, и установите SelectionLength
до нуля.
public void SetCaret(int position)
{
this.editableTextBox.SelectionStart = position;
this.editableTextBox.SelectionLength = 0;
}