Прерывистая ошибка при использовании EventTriggerBehavior/InvokeCommandAction

#c# #xaml #uwp

#c# #xaml #uwp

Вопрос:

Уважаемые коллеги,

У меня возникли проблемы со следующим кодом:

 <interactivity:Interaction.Behaviors>
     <core:EventTriggerBehavior EventName="BeforeTextChanging">
           <core:InvokeCommandAction Command="{Binding ConfirmEmailCommand, RelativeSource={RelativeSource Mode=TemplatedParent}}" />
     </core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
  

Я хочу подчеркнуть, что команда срабатывает в БОЛЬШИНСТВЕ случаев. Код работает. Проблема в том, что иногда этого не происходит. Команда не вызывается событиями, которые в противном случае вызвали бы ее.

Поведение относится к текстовому полю внутри TemplatedControl, которое существует внутри ContentDialog. У меня есть аналогичный код в других элементах управления, которые являются частью ContentDialog, и все они имеют такие периодические проблемы.

Есть ли у кого-нибудь опыт работы с такими проблемами и можете ли вы рассказать о возможном исправлении? Какой порядок построения элемента управления и распределения свойств может привести к тому, что команда будет недоступна для вызова во время события?

Комментарии:

1. Не могли бы вы поделиться более подробной информацией о вашем текущем IME и типе клавиатуры?

2. Я работаю на ноутбуке Lenovo, но проблема возникает как на других машинах, так и на моей. У меня такое ощущение, что это происходит из-за асинхронного характера инициализации макета и управления.

3. Не могли бы вы поделиться примером кода, который мог бы воспроизвести эту проблему?

4. @NicoZhu-MSFT Спасибо за помощь. Я не думаю, что это было бы возможно, потому что у нас есть корпоративный элемент управления FlipView, который мы используем для нашего проекта. Совместное использование этого было бы неправильным. Без этого, вероятно, код не вызовет никаких проблем. Структура следующая: триггер события является частью шаблонного элемента управления. Этот шаблонный элемент управления включен в UserControl для аутентификации. Этот пользовательский элемент управления включен в ContentDialog. Я могу предоставить некоторый фиктивный код, но он не будет работать и, вероятно, не воспроизведет проблему.

5. Да, если вы могли бы отладить код, пожалуйста, добавьте некоторую печать в заголовок метода, чтобы определить, было ли вызвано событие. если сработал обработчик событий, нам нужно проверить, существует ли какой-либо асинхронный процесс для решения этой проблемы. Потому что я не могу воспроизвести вашу проблему, поэтому я просто предоставляю некоторые навыки устранения неполадок.