Событие Validation.error в команде события
У меня есть текстовое поле:
<TextBox Height="20" Width="150" Text="{Binding MyProperty,NotifyOnValidationError=True,ValidatesOnDataErrors=True}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Validation.Error">
<mvvm:EventToCommand Command="{Binding MyCmd}" PassEventArgsToCommand="True" ></mvvm:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
Моя ViewModel выглядит так:
public class MyViewModel : ValidationViewModelBase, INotifyPropertyChanged
{
private int myVar;
[Range(0, 10)]
public int MyProperty
{
get { return myVar; }
set
{
myVar = value;
OnPropertyChanged("MyProperty");
}
}
public MyViewModel()
{
MyCmd = new RelayCommand<RoutedEventArgs>(Valid);
}
public RelayCommand<RoutedEventArgs> MyCmd { get; set; }
private void Valid(RoutedEventArgs args)
{
//Do something
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
#endregion INotifyPropertyChanged
}
Когда я ловлю событие Validation.Error в Code Behind, это работает:
Но когда я пытаюсь запустить его таким образом, с помощью Event Event не приходит валидная функция.
Я что-то пропустил?
2 ответа
Решение
Поскольку Validation.Error
это прикрепленное событие, то оно не работает с EventToCommand
обычно.
Ответ вы найдете по ссылке ниже:
Здесь нет Validation.Error
событие для TextBox
, Кроме того, нет Validating
событие для System.Controls.TextBox
(который вы используете).
использование LostFocus
проверить текстовое поле или увидеть этот вопрос, если вы хотите использовать проверку с шаблоном MVVM