ViewModel에 IDataErrorInfo를 구현하고 있습니다.IDataErrorInfo가 앱 시작시 오류를 표시하는 이유
<TextBox Text="{Binding Nom,
ValidatesOnDataErrors=True,
UpdateSourceTrigger=LostFocus,
NotifyOnValidationError=True}" />
:
나는
#region IDataErrorInfo
string IDataErrorInfo.Error
{
get { return null; }
}
string IDataErrorInfo.this[string propertyName]
{
get { return GetValidationError(propertyName); }
}
#endregion IDataErrorInfo
#region Validation
private static readonly string[] ValidatedProperties = { "Nom", "Prenom" };
public bool IsValid
{
get
{
foreach (string property in ValidatedProperties)
if (GetValidationError(property) != null)
return false;
return true;
}
}
private string GetValidationError(string propertyName)
{
string error = null;
switch (propertyName)
{
case "Nom":
error = ValidateNom();
break;
case "Prenom":
error = ValidatePrenom();
break;
}
return error;
}
private string ValidateNom()
{
if (string.IsNullOrWhiteSpace(Nom))
{
return "Last name is mandatory";
}
return null;
}
private string ValidatePrenom()
{
if (string.IsNullOrWhiteSpace(Prenom))
{
return "First name is mandatory";
}
return null;
}
나는 이런 내 텍스트 상자의 텍스트 attribut을 결합하고있어 의무적으로 만들고 싶어 두 가지 속성 '놈'& 'Prenom'을 가지고 내 문제는입니다 : 포커스를 잃기 전에 텍스트 상자에 오류 (응용 프로그램 시작)가 표시됩니다.
나는 (클릭 이벤트에서)이 일을 해요 그래서하지 전에 클릭 한 후 오류를 보여해야
if (!IsValid)
return;
빈 필드가 유효성 검사에 실패했기 때문에 정상적으로 작동하지 않습니까? 이 작업을 원하는대로하려면'UpdateSourceTrigger = Explicit'을 사용해야 할 수도 있습니다. – Sheridan
명시 적으로 변경했지만 결과는 항상 동일합니다. –
@Sheridan 무엇이 나를 미치게 만들지는 않습니다. 앱 시작시 IsValid 테스트를 수행하지 않습니다. ( –