验证事件未触发

本文关键字:事件 验证 | 更新日期: 2023-09-27 18:02:07

我有这个非常简单的viewModel:

class ViewModel : IDataErrorInfo
{
    public Producto myProduct { get; set; }
    public string PR { get; set; }
    public ViewModel()
    {
        myProduct = new Producto { ID = 1, Name = "Product 1" };
        PR = "Test";
    }
    public string Error
    {
        get { throw new NotImplementedException(); }
    }
    public string this[string columnName]
    {
        get 
        {
            string sError = "";
            return sError;
        }
    }
}

这个简单的视图:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"   
    Title="MainWindow" Height="350" Width="525">    
<Window.DataContext>
    <local:ViewModel/>
</Window.DataContext>
<Grid>
    <StackPanel>
    <TextBox Height="40" Width="200" Text="{Binding Path=myProduct.Name,ValidatesOnDataErrors=True}"/>
        <TextBox Height="40" Width="200" Text="{Binding Path=PR,ValidatesOnDataErrors=True}"/>
    </StackPanel>
</Grid>

谁能告诉我为什么验证事件是为财产PR而不是为我的产品?我无法从视图模型的公开对象验证字段!任何人请! !

验证事件未触发

{Binding Path=myProduct.Name, …

为了使绑定利用IDataErrorInfo, myProduct类型也必须实现IDataErrorInfo。就像您需要为子对象实现INotifyPropertyChanged一样,您也需要为每个子对象实现错误信息接口。