Domanda

Ho una semplice applicazione WPF che sto usando associazione dati per consentire la modifica di alcuni personalizzata di oggetti CLR.Io, ora, volendo mettere un po di convalida dell'input in quando l'utente fa clic su salva.Tuttavia, tutte le WPF libri che ho letto che in realtà non dedicare spazio a questo problema.Vedo che è possibile creare su misura ValidationRules, ma mi chiedo se questo sarebbe eccessivo per le mie esigenze.

Quindi la mia domanda è questa:c'è un buon esempio di applicazione o di un articolo da qualche parte che dimostra di migliori pratiche per la convalida dell'input dell'utente in WPF?

È stato utile?

Soluzione

Penso che sia il modo migliore potrebbe essere quella di utilizzare IDataErrorInfo

Leggi di più qui

Altri suggerimenti

Da MS s Modelli e Pratiche di documentazione:

La Convalida dei dati e di Segnalazione di Errore

Il modello di visualizzazione o il modello sarà spesso necessario per eseguire la convalida dei dati e di segnalare qualsiasi tipo di convalida dei dati errori di visualizzazione in modo che l'utente può agire per correggerli.

Silverlight e WPF fornire supporto per la gestione di errori di convalida dei dati che si verificano quando il cambiamento dei singoli le proprietà associate ai controlli nella vista.Per singole proprietà che sono associati a dati per un controllo, il modello di visualizzazione o di un modello in grado di segnalare un dati errore di convalida all'interno della proprietà setter rifiutando l'arrivo di un male il valore e la generazione di un'eccezione.Se il ValidatesOnExceptions proprietà l'associazione dei dati è vero, i dati motore di associazione in WPF e Silverlight gestirà l'eccezione e display un segnale visivo per l'utente che non c'è un errore di convalida dei dati.

Tuttavia, la generazione di eccezioni con proprietà in questo modo dovrebbero essere evitare, se possibile.Un'alternativa l'approccio è quello di implementare il IDataErrorInfo o INotifyDataErrorInfo interfacce sul tuo modello di visualizzazione o modello classi.Queste interfacce permettono al tuo vista modello o un modello per i dati di eseguire convalida per una o più proprietà valori e restituire un messaggio di errore per la vista in modo che l'utente può essere notifica di errore.

La documentazione va a spiegare come implementare IDataErrorInfo e INotifyDataErrorInfo.

personalmente, sto usando eccezioni per gestire la validazione.si richiede la seguente procedura:

  1. nella tua espressione di associazione dati, è necessario aggiungere "ValidatesOnException=True"
  2. in dati oggetto di associazione a, è necessario aggiungere DependencyPropertyChanged gestore dove si controlla se il nuovo valore soddisfa le vostre condizioni - se non si ripristina l'oggetto vecchio valore (se è necessario) e si buttano eccezione.
  3. nel modello di controllo si utilizza per la visualizzazione di valore non valido nel controllo, è possibile accedere Errore raccolta e la visualizzazione del messaggio di eccezione.

il trucco in questo caso, è quello di legare solo per gli oggetti che derivano da DependencyObject.semplice implementazione di INotifyPropertyChanged non c'è un bug nel quadro, che impedisce di accedere errore raccolta.

Controllare anche questo articolo.Presumibilmente Microsoft ha rilasciato loro Enterprise Library (v4.0) dal loro modelli e pratiche, dove occupano la convalida del soggetto, ma dio solo sa perchè non hanno incluso la convalida per WPF, così il blog post sono indirizzati, spiega ciò che l'autore ha di adattamento.Spero che questo aiuta!

Si potrebbe essere interessati a BookLibrary esempio di applicazione del WPF Application Framework (WAF).Viene illustrato come utilizzare la convalida in WPF e come controllare il pulsante Salva, quando gli errori di convalida esiste.

Se il vostro business class è utilizzato direttamente da interfaccia utente è preferibile utilizzare IDataErrorInfo perché mettere logica più vicino al loro proprietario.

Se il vostro business class è uno stub classe creata da un riferimento a un WCF/XmlWeb servizio, si non può/non deve utilizzare IDataErrorInfo né gettare Eccezione per l'uso con ExceptionValidationRule.Invece è possibile:

  • Personalizzate ValidationRule.
  • Definire una classe parziale nel WPF UI progetto e implementa IDataErrorInfo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top