2016-07-22 1 views
0

J'ai un formulaire wpf très simple qui contient une zone de texte qui se lie à un objet métier CSLA (Version 4.5.7). J'affecte la propriété AText un String.Empty.Le fournisseur d'erreur de la zone de texte wpf ne fonctionne pas

Le fournisseur d'erreur doit être activé lorsque la fenêtre est chargée initialement car il s'agit d'un champ obligatoire. Cependant, il est activé lorsque je commence à taper le premier caractère, ce qui est correct puisque j'ai le champ d'attribut de caractères minimum fixé à 5 caractères. Quand j'efface tous les caractères de la boîte le fournisseur d'erreur reste sur lequel aussi bien.

Pourquoi le fournisseur d'erreur n'est pas activé lorsque la fenêtre est chargée?

Merci

WPF

<Grid> 
    <TextBox Height="50" Width="300" Text="{Binding AText, Mode=TwoWay, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" /> 
    </Grid> 

C#

namespace TestNameSpace 
    { 
    [Serializable()] 
    public class CSLAClass : BusinessBase<CSLAClass> 
     { 
      public CSLAClass() 
      { 
      AText = String.Empty; 
      } 
     public static PropertyInfo<string> ATextProperty = RegisterProperty<string>(p => p.AText); 
     [Required, MinLength(5,ErrorMessage ="The Minimum is 5"), MaxLength(10)] 
     public string AText 
      { 
      get { return GetProperty(ATextProperty); } 
      set { SetProperty(ATextProperty, value); } 
      } 
      } 
     } 

Répondre

0

appelez-vous BusinessRules.CheckRules avant de retourner de votre DataPortal_Create/DataPortal_Fetch? Les règles ne s'exécutent pas automatiquement à partir de celles-ci, donc l'objet commencera comme valide.