Dans Silverlight 3 Je travaille avec un MVVM et aussi le principe de validation que les setters provoquent une exception si une erreur de validation se produit. Je l'aide de la liaison de syntaxe sur les champs à l'aide TwoWay-à-dire:Comment ajouter un bouton de fermeture à ValidationSummary dans Silverlight
<TextBox x:Name="TextBoxClientName" Text="{Binding Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=true}" Grid.Column="1" Grid.Row="0" Margin="5 5 5 5" />
Je valident cette propriété dans le ViewModel en utilisant les annotations:
[Required(ErrorMessage = "Name is required")]
public string Name
{
get
{
return _client.Name;
}
set
{
Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Name", DisplayName="Client Name" });
_client.Name = value;
}
}
J'ai le résumé de validation et tous fonctionnent bien, mais lol, la fonctionnalité que je recherche est la suivante:
Vous avez le formulaire de données et je veux que le résumé de validation apparaît sur le dessus seulement lorsque je clique sur sauvegarder, et plus encore je veux implémenter un bouton de fermeture sur ce ValidationSummary afin que le l'utilisateur peut continuer avec entrer ing et corrigeant.
Je ne suis pas sûr de savoir comment contrôler la visibilité ou la bascule de la validation, j'ai essayé la visibilité. Ce qui suit est le code que j'ai essayé, qui ne recueille les erreurs sur les présenter, mais je ne peux pas les appliquer à la ValidationSummary:
public void Save()
{
List<ValidationError> errors = new List<ValidationError>();
foreach (UIElement ui in LayoutRoot.Children)
{
FrameworkElement fe = ui as FrameworkElement;
if (fe != null)
{
foreach (ValidationError ve in Validation.GetErrors(fe))
{
errors.Add(ve);
}
}
}
if (errors.Count > 0)
{
Validation1.DataContext = errors;
Validation1.Filter = ValidationSummaryFilters.All;
}
else
{
if (Saved != null)
Saved(this, EventArgs.Empty);
}
}
Cheers,
Andrew