Ho due campi data: StartDate e EndDate. StartDate deve essere precedente a EndDate.Come posso convalidare più proprietà quando una di esse cambia?
Se l'utente modifica la data di inizio su un valore superiore a EndDate, viene visualizzato un bordo rosso attorno a DatePicker e viceversa. Se l'utente cambia la seconda casella in modo che l'intervallo di date sia corretto, la prima casella ha ancora l'errore di convalida.
Come posso convalidare entrambi i campi data quando uno di essi cambia?
sto usando IDataErrorInfo
public string GetValidationError(string propertyName)
{
switch (propertyName)
{
case "StartDate":
if (StartDate > EndDate)
s = "Start Date cannot be later than End Date";
break;
case "EndDate":
if (StartDate > EndDate)
s = "End Date cannot be earlier than Start Date";
break;
}
return s;
}
Non posso semplicemente sollevare un evento PropertyChange perché ho bisogno di convalidare entrambi i campi, quando uno di loro cambia, in modo da avere entrambi sollevare un evento PropertyChange per l'altro si bloccherà in un loop infinito.
Inoltre, non mi piace l'idea di cancellare il campo Data se l'altra data restituisce un errore di convalida.
Solo per lanciare un approccio alternativo là fuori, puoi rendere entrambe le caselle rosse quando una regola è rotta? Se è così, dovrai solo aumentare un evento di proprietà. – Josh
@Josh Mi piacerebbe, ma non so come aumentare manualmente l'evento di convalida per le singole proprietà – Rachel
Ho smesso di utilizzare Eventi di convalida.Ho avuto troppi problemi con loro, dove penso che dovrebbero sparare e loro no o fanno fuoco e il confine non evidenzia. Uso uno stile bordo rosso associato a una rappresentazione booleana valida. Lego anche il suggerimento a una proprietà del messaggio. Quindi, quando un valore cambia, lo convalido e imposto le proprietà in modo appropriato. – Josh