Как я могу предотвратить потерю фокуса TextBox или RichEditBox после нажатия на отключенную кнопку? - PullRequest
0 голосов
/ 12 октября 2018

Заголовок говорит сам за себя: «Как я могу предотвратить потерю фокуса в TextBox или RichEditBox после нажатия на отключенную кнопку?»

Я попытался установить для параметра AllowFocusOnInteraction значение false, но это работает только при включенной кнопке,Это свойство хорошо работает, если, скажем, у меня есть кнопка для установки текста на жирный или курсив.Редактор не потеряет фокус и все работает великолепно.Но если я отключу эту кнопку и нажму на нее, редактор потеряет фокус.Это вызывает несколько новых проблем для меня.Хотелось бы помочь с этим.Спасибо.

Также обратите внимание, что у меня есть приложение UWP.Не уверен, если это имеет значение, однако.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Хорошо, поэтому я нашел ПРАВИЛЬНЫЙ способ исправить проблему.Таким образом, кнопки жирного, курсивного и подчеркнутого формата находятся на моей панели инструментов.Что я должен был помнить, так это то, что на большинство элементов xaml можно щелкать, и, следовательно, вызывать событие PointerPressed, если элемент (например, элемент Grid) имеет фон для перехвата щелчка.Если фон прозрачен, событие PointerPressed не сработает.

Оооо, я убедился, что на моей панели инструментов установлен сплошной фон, а затем я установил событие PointerPressed.Поэтому всякий раз, когда вы нажимаете на панель инструментов, это событие срабатывает, и я просто устанавливаю для свойства e.Handled значение true;

Так что теперь, поскольку кнопка на панели инструментов отключена, щелчок указателя переместится к следующему интерактивному элементу в визуальном дереве, который находится под кнопкой, которую вы щелкнули, которая является моей панелью инструментов (которая теперь имеет фон).,Когда панель инструментов достигнута, событие e.Handled, установленное в true в обработчике событий, скажет системе больше ничего не делать, и поэтому RichEditBox сохраняет свой фокус.

Я знаю, что мои записи здесь очень неаккуратные, ноЯ сейчас как будто тороплюсь, и поэтому я, скорее всего, вернусь и уберу свой ответ.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 12 октября 2018

оберните отключенную кнопку в Границе или Сетка.

<Grid Tapped="DisabledButtonTapped">
    <Button IsEnabled="false"/>
</Grid>

теперь с помощью метода, коснувшегося этой сетки, вы можете вернуть фокус к вашему RichEditBox.

private void DisabledButtonTapped(object sender, object args)
{
    MyRichEditBox.Focus(FocusState.Programmatic);.//use the x:Name of your richeditbox in place of "MyRichEditBox".
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...