我有一个非常简单的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触发验证事件而不是针对myProduct触发验证事件? 我无法验证来自viewmodel的公开对象的字段!请任何人!!!
答案 0 :(得分:1)
{Binding Path=myProduct.Name, …
对于使用IDataErrorInfo
的绑定,myProduct
的类型也必须实现IDataErrorInfo
。就像你需要为子对象实现INotifyPropertyChanged
一样,你也需要为每个子对象实现错误信息界面。