WPF текстовое поле и двойной щелчок - PullRequest
4 голосов
/ 03 декабря 2009

Я показываю Mac-адрес в приложении WPF. Я хочу, чтобы этот MAC-адрес можно было выбрать для копирования / вставки, поэтому я использую ReadOnly TextBox

Когда пользователь дважды щелкнет, я хочу выделить весь MacAddress

Поведение по умолчанию в WPF и Windows - двойным щелчком мыши выбрать часть числа между двоеточиями. поэтому, когда MAC-адрес: 00: 55: 66: 77: 99

и двойной щелчок пользователя, выбирается только одна часть MAC-адреса (например, 55) Есть ли способ без кода сделать выделение всего содержимого для текстового поля

или, может быть, я не должен использовать текстовое поле?

Спасибо

Ответы [ 4 ]

5 голосов
/ 03 декабря 2009

В случае события MouseDoubleClick текстового поля вы можете вызвать метод текстового поля SelectAll (), чтобы выделить весь текст внутри него.

void textBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    (sender as TextBox).SelectAll();
}
1 голос
/ 03 декабря 2009

К сожалению, я не думаю, что есть способ сделать это непосредственно в TextBox.

При этом было бы тривиально добавить это поведение в текстовое поле через Присоединенное свойство или Поведение выражения (мои предпочтения). Просто следите за изменением выбора, и если есть что-то выбранное, выберите все. Тогда вы можете легко использовать это в других местах, не добавляя код в ваш код за файлами. Вы по-прежнему добавляете код, но не в фактический класс UserControl или Window, а скорее в повторно используемый компонент, который будет просто вставлен в xaml.

0 голосов
/ 03 декабря 2009

Мне понравилась идея поведения, но мне пришлось перераспределить некоторую сборку, связанную с Blend, и я пока не знаю Blend. Поэтому я в конечном итоге создаю новый тип текстового поля, которое наследуется от текстового поля, и выбирает все, когда mousedoubleclick

Спасибо за все ответы

0 голосов
/ 03 декабря 2009

Разве вы не можете просто обработать событие MouseDoubleClick?В противном случае, если вы хотите всегда предотвращать частичное выделение, вы можете обработать событие SelectionChanged.В любом случае вы можете использовать метод SelectAll.

Неважно, я перечитал и увидел, что вы хотите решение без кода.К сожалению, я не знаю ни одного.

...