Я пытаюсь настроить проверку WPF для работы с шаблоном MVVM.
В моем View я могу проверить 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}' не является допустимым методом обработчика событий name. Допустимы только методы экземпляра в сгенерированном классе или классе с выделенным кодом."
Есть ли обходной путь для этого, чтобы мы могли обрабатывать проверки в шаблоне 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