Wpf event命令中的Validation.error事件
我有一个文本框:Wpf event命令中的Validation.error事件,wpf,events,mvvm,binding,eventtocommand,Wpf,Events,Mvvm,Binding,Eventtocommand,我有一个文本框: <TextBox Height="20" Width="150" Text="{Binding MyProperty,NotifyOnValidationError=True,ValidatesOnDataErrors=True}" > <i:Interaction.Triggers> <i:EventTrigger EventName="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
}
公共类MyViewModel:ValidationViewModelBase,INotifyPropertyChanged
{
私有int-myVar;
[范围(0,10)]
公共财产
{
获取{return myVar;}
设置
{
myVar=价值;
OnProperty变更(“我的财产”);
}
}
公共MyViewModel()
{
MyCmd=新的中继命令(有效);
}
公共中继命令MyCmd{get;set;}
私有无效有效(RoutedEventArgs参数)
{
//做点什么
}
#区域inotifyproperty已更改
公共事件属性更改事件处理程序属性更改;
公共void OnPropertyChanged(字符串名称)
{
if(PropertyChanged!=null)
{
PropertyChanged(此,新PropertyChangedEventArgs(名称));
}
}
#endregion InotifyProperty已更改
}
当我捕捉到事件验证时,它背后的代码中的错误会起作用:
但是,当我试图用Event命令以这种方式运行它时,它并不是有效的函数
我错过了什么吗?没有验证。的错误事件。此外,您正在使用的
System.Controls.TextBox
,没有验证事件
使用LostFocus
验证文本框,或者查看是否要对MVVM模式使用验证,因为验证。错误是附加事件,则它不能正常使用事件命令
您可以在下面的链接中找到答案:
事实上,文本框中存在验证错误。请看正在讨论的图片。它在代码隐藏中工作。我对失去焦点不感兴趣-验证已经开始工作了。我想在发生验证错误时运行命令。不,不存在验证。对于文本框
,错误
事件。您正试图将其用作事件,这是错误的。当此事件处于代码隐藏状态时-这不是事件?验证。错误附加事件: