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.
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