Vorrei visualizzare avvisi ed errori durante la convalida di un oggetto aziendale e visualizzarli visivamente all'utente.Visualizzazione di avvisi in modo simile agli errori su un controllo wpf
Per esempio io ho una classe di oggetti di business implementando un'interfaccia in questo modo:
interface IOrderItem : IDataErrorInfo
{
int ProductId { get; set; }
string ProductName { get; set; }
decimal Price { get; set; }
IDictionary<string, string> Warnings { get; }
}
Questo è destinato all'interfaccia utente come segue:
<TextBox Text="{Binding Price, ValidatesOnDataErrors=True}/>
Un errore potrebbe essere:
- Prezzo < 0 => "Il prezzo non può essere inferiore a 0"
Questo funziona correttamente e disegna un bordo rosso attorno alla casella di testo quando inserisco il messaggio di errore sull'oggetto business utilizzando l'interfaccia IDataErrorInfo
.
Quello che vorrei fare è specificare anche le avvertenze, per esempio:
- Prezzo < 15 || Prezzo> 30 => "Prezzo fuori tolleranza"
Queste avvertenze inseriscono un bordo arancione attorno a una casella di testo e informano l'utente che potrebbe esserci un problema ma non impediscono che procedano.
Gli avvisi sono memorizzati in un dizionario di stringhe mappatura PropertyName => WarningMessage in modo simile a IDataErrorInfo
.
Domanda: Qual è il modo migliore per farlo?
- Ovviamente avrò bisogno di uno stile che contiene un bordo arancione per la casella di testo, ma come faccio a innescare esso?
- Non voglio uno stile separato per ogni casella di testo, quindi come può lo stile accedere al bind sottostante per ottenere il nome della proprietà che dovrebbe cercare nel dizionario.
Ho riscontrato un problema molto simile (http://stackoverflow.com/questions/3813365/mimicking-validation-behaviour-without-validation), quindi pubblicherò una taglia qui. – GWLlosa