ビューモデルクラスに2つのプロパティ[SaySize、StrVal]があります。制約の1つは、StrValの長さがSize以下でなければならないということです。この制約は、IDataErrorInfoインデクサーに適用されます。
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
ただし、「StrVal」プロパティのpropertyChangedイベントをプログラムで起動するまで、視覚的にはエラー状況が表示されます。そのため、次のコードを使用する必要があります。
public int? Size
{
get
{
return this.size;
}
set
{
if (value == this.Size)
{
return;
}
this.size = value;
this.OnPropertyChanged("StrVal");
}
}
これが問題を処理する理想的な方法であるかどうかをアドバイスしてください。よろしく、アニルバン