Как сделать, чтобы текстовое поле в UserControl не получало фокус при загрузке?

У меня есть страница XAML, на которой, нажав кнопку «Добавить», я создаю UserControl и добавляю его в свой контейнер. Этот UserControl имеет прямоугольник, текстовое поле и несколько кнопок. Моя проблема в том, что при первом нажатии кнопки «Добавить» фокус переходит на текстовое поле. Повторное нажатие на кнопку «Добавить» создает дополнительные экземпляры UserControl, но фокус остается на TextBox1. Если я сейчас нажму на Textbox5, это поле получит фокус, но как только я щелкну снаружи, фокус вернется к Textbox1. Я хотел бы, чтобы акцент был сделан на текстовые поля, только по щелчку.

Я попытался установить IsTabStop = true в XAML и перехватить затронутое событие и установить для него значение false, но это не имеет заметного эффекта.

Что сработало идеально, так это установка TabIndex = 2 TextBox и создание еще одной кнопки перед и установка TabIndex = 1. Но я теряю это преимущество, когда устанавливаю для Button Visibility = Collapsed. TextBox - это крайний левый элемент управления, поэтому он должен иметь самый низкий TabIndex (технически говоря, есть Rectangle слева от TextBox, но поскольку Rectangle не является Control, он не может иметь TabIndex).

Как я могу это исправить?


person Freakishly    schedule 05.02.2015    source источник


Ответы (1)


Я считаю, что когда вы добавляете дополнительные элементы управления, происходит сброс текущего индекса табуляции. Таким образом, каждый раз, когда вы добавляете элемент управления, основное внимание уделяется TextBox TabStop 1.

Что вы можете сделать, так это после добавления элемента управления вызвать Focus() для элемента управления, на котором вы хотите сфокусироваться.

person JeremyK    schedule 05.02.2015
comment
Могу ли я сосредоточить внимание на родительском элементе UserControl? Например, в контейнер Grid в родительском элементе? - person Freakishly; 05.02.2015
comment
Я могу ошибаться, но я не думаю, что Грид может иметь фокус. Вам нужно будет установить фокус на другой элемент управления, вероятно, кнопка, которая была только что нажата, имеет наибольший смысл. - person JeremyK; 06.02.2015
comment
Кроме того, нет возможности убрать фокус со всех элементов управления. Вы должны сделать, как вы сказали в тот момент, создать скрытую кнопку и установить на ней фокус. - person JeremyK; 06.02.2015