Удалить выбрать все из выпадающего списка WPF - PullRequest
1 голос
/ 08 сентября 2010

В приложении WPF есть выпадающий список, который, когда пользователь нажимает на него, выделяет весь текст. Как я могу изменить его поведение, когда пользователь нажимает на него, просто устанавливая курсор ввода текста как обычное текстовое поле?

Ответы [ 3 ]

1 голос
/ 08 сентября 2010

Попробуйте

<ComboBox IsEditable="True" />
0 голосов
/ 25 сентября 2017

Кажется, мне пришлось решить подобную проблему.Это довольно сложно, но я решил установить для IsEditable значение false / true из кода, в то же время я сосредоточил внимание на TextBox.

Не очень красиво, но выполняет свою работу.

0 голосов
/ 08 сентября 2010

Согласно 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, чтобы найти это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...