Я реализовал асинхронную проверку согласно этой статье .
Я использовал аннотации данных как в своем классе Organization
, так и в своем классе Address
. Организация имеет свойство OrgnizationName
(строка). Свойство Address. Соответствующие биты:
Address.cs
private string city;
[Required]
public string City
{
get { return this.city; }
set
{
if (this.city != value)
{
this.city = value;
RaisePropertyChanged("City");
}
}
}
// Other Address bits...
Organization.cs
private string organizationName;
[Required]
[StringLength(50)]
[Display(Name = "Organization")]
public string OrganizationName
{
get { return this.organizationName; }
set
{
if (this.organizationName != value)
{
this.organizationName = value;
RaisePropertyChanged("OrganizationName");
}
}
}
[Required]
[Display(Name = "Address")]
public Address Address { get; set; } = new Address();
// Other Organization bits...
Моя виртуальная машина :
OrganizationVM.cs
public class OrganizationDetailsVM : ValidatableModel
{
public Organization Organization { get; set; }
public OrganizationDetailsVM (Organization inputOrganization)
{
Organization = inputOrganization;
// other bits here...
}
public Command SaveCommand
{
get
{
return new Command(() =>
{
Debug.Print("Saving Organization...");
try
{
if (Organization.OrganizationID == 0)
Organization.AddOrganization();
else
Organization.UpdateOrganization();
}
catch (Exception ex)
{
EventHandler<FailureEventArgs> h = Failure;
FailureEventArgs args = new FailureEventArgs { ErrorMessage = ex.ToString() };
h?.Invoke(this, args);
}
}, () =>
{
return !HasErrors && !Organization.HasErrors && !Organization.Address.HasErrors;
});
}
}
// More bits...
Часть, которая меня запутала, такова:
return !HasErrors && !Organization.HasErrors && !Organization.Address.HasErrors;
Если я просто использую это:
return !HasErrors
... он не подхватывает ошибки дочерних свойств. Что мне здесь не хватает?