Я скопировал тот же подход, который использовал Silverlight на настольных компьютерах: интерфейс INotifyDataErrorInfo .
Здесь Я описал это более подробно, и здесь Вы можете загрузить исходный код примера проекта.
Самый простой пример выглядит так:
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");
}
}
}
Он опирается на множество дополнительных классов, но в то же время есть небольшой код, который вы напишите сами.