2012-03-08 25 views
6

Necesito desarrollar una aplicación Windows Phone 7. Y por razones obvias tengo que validar mis formularios.Validación de formulario

Normalmente programo en WPF y uso el principio de ValidationRule. Pero no puedo encontrar el mismo principio en Windows Phone 7.

De ahí mi pregunta, cómo crear una validación de formulario.

+0

Anunciaré mi implementación de validación: http://vortexwolf.wordpress.com/2012/03/10/windows-phone-7-validation. Creo que es más fácil de usar que otras implementaciones en internet. – vorrtex

Respuesta

4

Windows Phone no admite validaciones de formularios de fábrica.

Aquí hay un blog post que describe cómo implementar un control personalizado para implementar reglas de validación.

La forma en que manejaría esto en una de mis propias aplicaciones sería poner la lógica de validación en mi clase de modelo y crear una propiedad IsValid en el modelo. La clase de modelo también tendría una propiedad Error con un mensaje de error que describa el problema de validación. Mi capa de interfaz de usuario llama al myModel.IsValid y muestra el mensaje de error si algo anda mal.

+0

thx, esperaba que un método ya implementado por Microsoft – David

0

Copié el mismo enfoque que utilicé con Silverlight en computadoras de escritorio: la interfaz INotifyDataErrorInfo.

Here Lo describí más particularmente, y here puede descargar el código fuente del proyecto de muestra.

El ejemplo más simple se ve tan:

View.xaml

<TextBox Text="{Binding SomeProperty, Mode=TwoWay, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True}" 
     Style="{StaticResource ValidationTextBoxStyle}" /> 

View.xaml.cs

public MainPage() 
{ 
    InitializeComponent(); 
    this.BindingValidationError += MainPage_BindingValidationError; 
} 

private void MainPage_BindingValidationError(object sender, ValidationErrorEventArgs e) 
{ 
    var state = e.Action == ValidationErrorEventAction.Added ? "Invalid" : "Valid"; 

    VisualStateManager.GoToState((Control)e.OriginalSource, state, false); 
} 

ViewModel.cs

public class MainViewModel : ValidationViewModel 
{ 
    public MainViewModel() 
    { 
     this.Validator.AddValidationFor(() => this.SomeProperty).NotEmpty().Show("Enter a value"); 
    } 

    private string someProperty; 

    public string SomeProperty 
    { 
     get { return someProperty; } 
     set 
     { 
      someProperty = value; 
      RaisePropertyChanged("SomeProperty"); 
     } 
    } 
} 

Se basa en muchas clases suplementarias, pero al mismo tiempo hay poco código que usted mismo va a escribir.

Cuestiones relacionadas