Отмена LostFocus в MVVM - PullRequest
       7

Отмена LostFocus в MVVM

0 голосов
/ 11 мая 2018

У меня есть текстовое поле WPF, которое я хочу проверить, чтобы текстовое значение было правильным, прежде чем я позволю ему потерять клавиатуру / фокус.

<TextBox Grid.Column="0"
Text="{Binding Input, UpdateSourceTrigger=PropertyChanged}">
<b:Interaction.Triggers>
    <b:EventTrigger EventName="LostFocus">
        <b:InvokeCommandAction  Command="{Binding LostFocusCommand}" />
    </b:EventTrigger>
 </b:Interaction.Triggers>

В команде, как отменитьпотерял фокус?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете обработать событие PreviewLostKeyboardFocus и использовать TriggerAction, который передает EventArgs команде. MvvmLight имеет действие EventToCommand, которое делает это:

<TextBox ... xmlns:command="http://www.galasoft.ch/mvvmlight">
    <b:Interaction.Triggers>
        <b:EventTrigger EventName="PreviewLostKeyboardFocus">
            <command:EventToCommand Command="{Binding LostFocusCommand}" PassEventArgsToCommand="True" />
        </b:EventTrigger>
    </b:Interaction.Triggers>
</TextBox>

Просмотреть модель:

LostFocusCommand = new RelayCommand<KeyboardFocusChangedEventArgs>(args => 
{
    //...

    args.Handled = true;
});
...