Согласно Reflector, код ComboBox
содержит это:
private static void OnGotFocus(object sender, RoutedEventArgs e)
{
ComboBox box = (ComboBox) sender;
if ((!e.Handled && box.IsEditable) && (box.EditableTextBoxSite != null))
{
if (e.OriginalSource == box)
{
box.EditableTextBoxSite.Focus();
e.Handled = true;
}
else if (e.OriginalSource == box.EditableTextBoxSite)
{
box.EditableTextBoxSite.SelectAll(); // <==
}
}
}
Этот метод зарегистрирован для события GotFocus
в статическом конструкторе с использованием EventManager
:
EventManager.RegisterClassHandler(typeof(ComboBox), UIElement.GotFocusEvent, new RoutedEventHandler(ComboBox.OnGotFocus));
Итак, я думаю, что вы можете изменить это поведение только путем получения пользовательского элемента управления из ComboBox
и переопределить регистрацию этого события вашим собственным методом, который заменяет вызов SelectAll()
другим методом, который устанавливает курсор в правильную позицию.,Тем не менее, я не знаю, как установить каретку в положение щелчка.Возможно, вам придется использовать Reflector на TextBox, чтобы найти это ...