У меня есть два свойства [Say Size, StrVal] в моем классе viewmodel. Одним из ограничений является то, что длина StrVal должна быть меньше или равна размеру; Это ограничение применяется в индексаторе IDataErrorInfo.IDataErrorInfo Issue
public string this[string propertyName]
{
get
{
string msg = null; ;
switch (propertyName)
{
....
case "StrVal":
{
if (this.StrVal.Length > this.SizeOfStringVal)
{
msg = "Size of entered value is greater than the size";
}
}
break;
.........
}
return msg;
}
}
Теперь рассмотрим следующую ситуацию
Size = 5;
StrVal = "ABCDEF" ; // length = 6 > Size
"Error message is generated"
Size = 7 // length of StrVal is less than 7
Но визуально еще ситуация ошибка отображается, пока я программно не срабатывала PropertyChanged событие для свойства «StrVal». По этой причине я должен использовать следующий код.
public int? Size
{
get
{
return this.size;
}
set
{
if (value == this.Size)
{
return;
}
this.size = value;
this.OnPropertyChanged("StrVal");
}
}
Просьба сообщить, является ли это идеальным способом решения проблемы. С уважением, Anirban
Является ли 'StrVal' привязанным к' TextBox'? Если это так, вы можете показать XAML? –
Цель 4.5, реализовать [INotifyDataErrorInfo] (http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo (VS.95) .aspx), победить. – Will