2016-07-22 17 views
0

Ich habe ein sehr einfaches WPF-Formular, das ein Textfeld enthält, das an ein CSLA-Geschäftsobjekt bindet (Version 4.5.7). Ich gebe die Eigenschaft AText ein String.Empty.wpf Textfeldfehleranbieter funktioniert nicht

Der Error-Provider sollte aktiviert werden, wenn das Fenster anfänglich geladen wird, da es ein erforderliches Feld ist. Allerdings wird es aktiviert, wenn ich das erste Zeichen eintippe, was in Ordnung ist, da ich das Feld mit den Mindest-Zeichenattributen auf 5 Zeichen gesetzt habe. Wenn ich alle Zeichen aus der Box lösche bleibt der Fehleranbieter auf dem auch in Ordnung.

Warum wird der Fehleranbieter nicht aktiviert, wenn das Fenster geladen wird?

Danke

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); } 
      } 
      } 
     } 

Antwort

0

Sind Sie BusinessRules.CheckRules vor der Rückkehr aus Ihrem DataPortal_Create/DataPortal_Fetch nennen? Die Regeln werden nicht automatisch von diesen Regeln ausgeführt, daher beginnt das Objekt als gültig.