#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 ... />
. Тогда это должно сработать.