2012-05-16 18 views
5

Ho cercato su Google per circa 2 ore e non ho trovato nulla.Metro di Windows 8: convalida dell'implementazione

Dato il seguente scenario:

public class Person 
{ 
    [Required] 
    public string Name { get; set; } 
} 

XAML:

<TextBox Text="{Binding Name, Mode=TwoWay}" /> 

Come si va ottiene circa automaticamente le risposte della convalida l'interfaccia utente che ci sia in MVC3?

(Oh, e io davvero non mi interessa in questo momento se sarei stato in grado di utilizzare le DataAnnotations integrati come [Obbligatorio] o meno)

Qualsiasi aiuto è molto apprezzato!

risposta

13

Ho aggiunto qualcosa allo WinRT XAML Toolkit. Si chiama TextBoxValidationExtensions e consente di definire la convalida in questo modo:

<TextBox 
    Width="400" 
    HorizontalAlignment="Left" 
    xyzc:TextBoxValidationExtensions.Format="NonEmptyNumeric" 
    xyzc:TextBoxValidationExtensions.InvalidBrush="Red" 
    xyzc:TextBoxValidationExtensions.ValidBrush="Green" /> 

I formati sono attualmente definita come:

[Flags] 
public enum ValidTextBoxFormats 
{ 
    Any = 0, 
    NonEmpty = 1, 
    Numeric = 2, 
    NonEmptyNumeric = 3 
} 

L'intero codice è un po 'troppo lungo per condividere qui. Si può prendere il codice da CodePlex e modificare a proprio piacimento - aggiungere nuove regole di convalida, modificare pennelli predefiniti ecc

+0

Sembra che questo faccia il trucco! Ad ogni modo, puoi spiegarmi come sarei in grado di configurarlo in codice piuttosto che in XAML? – Shion

+0

Se si utilizza MVVM, si otterrebbe una sorta di modello di visualizzazione per un campo, con proprietà di testo e formato, quindi sarà sufficiente impostare l'associazione come xyzc: TextBoxValidationExtensions.Format = "{Binding Format}". Se esegui semplicemente il codice, chiamerai TextBoxValidationExtensions.SetFormat (myTextBox, ValidTextBoxFormats.Numeric). –

+0

Un'altra soluzione è stata descritta da Jerry Nixon sul suo blog [qui - Let's Code! Gestione della convalida nell'app di Windows Store] (http://blog.jerrynixon.com/2014/07/lets-code-handling-validation-in-your.html). –

0

Basta utilizzare gli eventi nel particolare XAML controllo, come se in textbox uso pointerexited e scrivere una funzione nel codice dietro per eseguire la convalida richiesta.

+0

Sebbene la domanda avesse già una risposta: il tuo suggerimento porterebbe a un codice duplicato e di difficile manutenzione. Filip Skakun ha (nella risposta accettata!) Ha già risposto perfettamente. :) – Shion

-1

Sembra, in base al supporto fornito nel framework, che la tua straordinaria idea di "Convalidare" un campo di testo sia così rara e rara da non dover essere considerata affatto. Sappiamo tutti che se quello che volevi fare fosse del tutto comune o utile, ci sarebbe una certa considerazione per tale caratteristica in un quadro così ben progettato e completo.

+0

Perché non sarebbe necessario convalidare una casella di testo, ad esempio, un URL, un numero, un email di base o qualcos'altro? Ovviamente si può fare la convalida con un clic di un pulsante e aggiungere lo stile necessario alla casella di testo, ma a volte non è ciò che è necessario. E anche: solo perché non è nel quadro non significa che non è desiderato/necessario. – Shion

+0

@Shion trova un dizionario e cerca la parola 'sarcasm' – HappyNomad

+0

Ci sono persone che intendono roba simile alla risposta sopra seria ... – Shion

Problemi correlati