Примечание. У меня есть классы EntityObject
!WPF Validation & IDataErrorInfo
У меня есть следующий класс:
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
по валидации там - я не получаю перерывы. Проверка не выполняется. Может ли кто-нибудь просто нажать меня на место, где лежит моя ошибка?
Но, как я уже упоминал выше - как Foo и Bar и дочерние классы класса EntityObject (который не уведомит OnPropertyChange). – Jefim
Я действительно думал, что родительский класс EntityObject может каким-то образом повлиять на это, поскольку IDataErrorInfo обычно работает нормально. – Jefim
@Jefim: что вы подразумеваете под родительскими/дочерними классами? Представленные вами Foo и Bar не наследуют ни от чего. Если вы имели в виду, что Foo и Bar объявлены как ** внутренние ** классы некоторого производного класса EntityObject, то это ничего не меняет. В C# внутренние классы влияют только на публичную/защищенную/закрытую видимость членов внешнего класса. Они не влияют на поведение кода/события/свойства/наследования/etc. – quetzalcoatl