2009-09-04 7 views
0

Cela peut être un peu sinueux parce que je suis nouveau à wpf. J'ai créé une classe partielle pour une entité de ma classe L2S qui est principalement utilisée pour la validation. Il implémente les méthodes onchanging et onvalidate. Je suis en train d'utiliser le modèle MVVM et dans une fenêtre/vue, j'ai mis le datacontext dans le XAML:Validation L2S question

<Window.DataContext> 
    <vm:StartViewModel /> 
</Window.DataContext> 

lorsqu'un utilisateur quitte un champ obligatoire dans l'ébauche de vue, l'événement OnChanging de la classe partielle est déclenché lorsque je ferme le formulaire, pas lorsque je sauvegarde les données. Ainsi, si un utilisateur laisse la zone de texte vide, l'ancienne valeur est conservée et la méthode d'émission est déclenchée, mais je ne sais pas comment alerter l'utilisateur de l'erreur qui en résulte. voici mon code OnChanging dans la classe partielle:

partial void Ondocument_titleChanging(string value) 
    { 
     if (value.Length == 0) 
      throw new Exception("Document title is required."); 
     if (value.Length > 256) 
      throw new Exception("Document title cannot be longer than 256 characters."); 
    } 

lancer une exception ne pas notifier l'utilisateur de l'erreur. cela permet simplement au formulaire de se fermer et rejette les modifications apportées à la zone de texte.

espoir ce sens ...

modifier: cet exemple a été repris de l'article Scott Guthries ici: http://aspalliance.com/1427_LINQ_to_SQL_Part_5__Binding_UI_using_the_ASPLinqDataSource_Control.5

Répondre

0

ok, figured it out. J'avais besoin d'ajouter ce qui suit à la liaison des contrôles:

Text="{Binding Path=CurrentDocument.document_title, ValidatesOnDataErrors=True, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged}"