Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf event命令中的Validation.error事件_Wpf_Events_Mvvm_Binding_Eventtocommand - Fatal编程技术网

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模式使用验证,因为
验证。错误
附加事件,则它不能正常使用
事件命令

您可以在下面的链接中找到答案:


事实上,文本框中存在验证错误。请看正在讨论的图片。它在代码隐藏中工作。我对失去焦点不感兴趣-验证已经开始工作了。我想在发生验证错误时运行命令。不,不存在
验证。对于
文本框
,错误
事件。您正试图将其用作事件,这是错误的。当此事件处于代码隐藏状态时-这不是事件?验证。错误附加事件: