Как я могу обработать Validation.Error в моей ViewModel вместо кода моего View?

Я пытаюсь заставить валидацию WPF работать в шаблоне MVVM.

На мой взгляд, я могу проверить TextBox, как это, который обрабатывается методом code-behind "HandleError", который отлично работает:

<TextBox Width="200"
         Validation.Error="HandleError">
    <TextBox.Text>
        <Binding Path="FirstName"
             NotifyOnValidationError="True"
             Mode="TwoWay">
            <Binding.ValidationRules>
                <validators:DataTypeLineIsValid/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Тем не менее, я хотел бы обработать проверку в моей ViewModel через DelegateCommand, но когда я пытаюсь сделать это с помощью следующего кода, я получаю явную ошибку "«{Binding HandleErrorCommand}» не является допустимым именем метода обработчика событий. Допустимы только методы экземпляра в сгенерированном классе или классе с выделенным кодом."

Есть ли обходной путь для этого, чтобы мы могли обрабатывать проверки в шаблоне MVVM?

Посмотреть:

<TextBox Width="200"
         Validation.Error="{Binding HandleErrorCommand}">
    <TextBox.Text>
        <Binding Path="FirstName"
             NotifyOnValidationError="True"
             Mode="TwoWay">
            <Binding.ValidationRules>
                <validators:DataTypeLineIsValid/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

ViewModel:

#region DelegateCommand: HandleError
private DelegateCommand handleErrorCommand;

public ICommand HandleErrorCommand
{
    get
    {
        if (handleErrorCommand == null)
        {
            handleErrorCommand = new DelegateCommand(HandleError, CanHandleError);
        }
        return handleErrorCommand;
    }
}

private void HandleError()
{
    MessageBox.Show("in view model");
}

private bool CanHandleError()
{
    return true;
}
#endregion

Ответы на вопрос(2)

Ваш ответ на вопрос