У меня есть TextBox, который выполняет SelectAll (), когда он получает фокус. Работает отлично. Проблема в том, что если содержимое не помещается в поле, то SelectAll приводит к прокрутке содержимого до конца. Я хочу, чтобы вместо этого он прокручивался вперед - это поле используется с числовыми полями.
Мой вопрос: возможно ли выбрать SelectAll (), но избежать прокрутки?
Обходной путь, который я имею сейчас, состоит в том, чтобы поставить ScrollToHome в очередь. Мне это не очень нравится, потому что это иногда вызывает треск, когда текст отображается в одной позиции, затем в другой.
public new void SelectAll()
{
base.SelectAll();
// changing selection does something with a queued scroll request, so have to queue ours in the back. this still may cause a flash
// if a render slips through. would like to find a better way to do this.
Dispatcher.BeginInvoke(DispatcherPriority.Background, ScrollToHome);
}
Обратите внимание, что ScrollToHome должен быть поставлен в очередь следующим образом или он «перезаписывается» из-за какого-либо другого события в очереди. Я покопался в источнике, и он довольно сложный, мне было трудно понять, где именно он делает запрос на прокрутку.
Итак, что я ищу, так это одно из следующих:
- Как выбрать All () без прокрутки или прокрутки вперед.
- Как принудительно обновить отображение, чтобы я не получил всплывающее окно.