IsEnabled привязка нарушена при добавлении EventTrigger

#c# #wpf #data-binding #prism

#c# #wpf #привязка к данным #призма

Вопрос:

У меня есть это, TextBox которое отключается, когда CheckBox установлен флажок, используя привязку к IsEnabled . Это прекрасно работает само по себе.

 <TextBox Text="{MyValue}" IsEnabled="{Binding CheckBoxTicked}" />
  
 <CheckBox IsChecked="{Binding CheckBoxTicked, Converter={StaticResource BoolInverterConverter}}"  />
  

Я хочу добавить к этому LostFocus событие TextBox , которое проверит правильность значения с помощью команды в ViewModel .

 <i:Interaction.Triggers>
    <i:EventTrigger EventName="LostFocus">
        <prism:InvokeCommandAction Command="{Binding LostFocusCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
  

Это тоже работает, но IsEnabled привязка нарушается при добавлении триггера, и TextBox больше не реагирует на тиканье CheckBox .

Вещи, которые я пробовал :

  • Если я принудительно IsEnabled включу False , TextBox это будет правильно отключено.
  • Если я изменю имя в InvokeCommandAction привязке на неправильное имя команды, привязка к CheckBox снова сработает.

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

1. Что LostFocusCommand делает?

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

3. Что, если удалить конвертер или заменить prism:InvokeCommandAction на i:InvokeCommandAction ?

4. @mm8 Да, это работает, вот и все. Спасибо!

5. @Alex Какой из них сделал трюк, удалив конвертер или изменив InvokeActionCommand ?

Ответ №1:

Попробуйте удалить конвертер или заменить <prism:InvokeCommandAction ... /> на <i:InvokeCommandAction ... /> . Тогда это должно сработать.