注意--我的类是EntityObject类!
我有以下类:
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar : IDataErrorInfo
{
public string Name { get; set; }
#region IDataErrorInfo Members
string IDataErrorInfo.Error
{
get { return null; }
}
string IDataErrorInfo.this[string columnName]
{
get
{
if (columnName == "Name")
{
return "Hello error!";
}
Console.WriteLine("Validate: " + columnName);
return null;
}
}
#endregion
}XAML如下所示:
<StackPanel Orientation="Horizontal" DataContext="{Binding Foo.Bar}">
<TextBox Text="{Binding Path=Name, ValidatesOnDataErrors=true}"/>
</StackPanel>我在验证中放了一个断点和一个Console.Writeline -我没有中断点。不执行验证。有人能把我压在我的错误所在的地方吗?
发布于 2011-07-18 19:35:45
这可能是一个愚蠢的答案,但在默认情况下,当LostFocus发生时,绑定将调用设置器。如果您还没有这样做,请尝试这样做。
如果希望在每次按键时都触发错误代码,请在绑定中使用UpdateSourceTrigger=PropertyChanged。
发布于 2010-03-22 23:31:11
你忘了在“Bar”类上实现INotifyPropertyChanged,那么只有绑定系统才会触发setter。
所以你的“Name”属性最有可能是。
public string Name
{
get{ return _name; }
set
{
_name = value;
RaisePropertyChanged("Name"); // Or the call might OnPropertyChanged("Name");
}
}发布于 2011-01-05 03:16:54
我不熟悉EntityObject类,在.NET框架文档或快速的谷歌搜索中也找不到它。
不管怎样,你需要做的就是让我们也使用NotifyOnValidationError:
<TextBox Text="{Binding Path=Name, ValidatesOnDataErrors=true, NotifyOnValidationError=true}"/>https://stackoverflow.com/questions/2492122
复制相似问题