我搜索了类似的问题,但找不到任何东西。 .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;
}

10-06 07:04