我搜索了类似的问题,但找不到任何东西。 .Caret似乎不可用,我也不知道如何深入到文本框或组合框中嵌入的任何控件。
最佳答案
您需要从组合框的控件模板中获取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;
}