If you use CSLA and use GUIDs as your unique identifiers you may have need to make them required for a particular object’s property. It isn’t as difficult to do as you might think and I will show you how to accomplish this by writing a custom validation rule.

I have an object that has two properties, a LineNumber and a ControlAccount.  The ControlAccount property is represented by as ComboBox using the Id (GUID) as the SelectedValuePath and the Description as the DisplayMemberPath as displayed by my WPF UI. I don’t want to user to be able to add a record unless they select a Control Account.


As you can see the LineNumber is required and I am using the built-in CommonRules.StringRequired rule to add validation to the LineNumber property.

ValidationRules.AddRule(CommonRules.StringRequired, LineItemValueProperty);

So now my problem is that CSLA doesn’t have a GuidRequired rule in its CommonRules class for me to use.  So I will have to write my own.

namespace BusinessLibrary.Validation
   public static class CustomRules
      public static bool GuidRequired(object target, RuleArgs e)
         Guid value = (Guid)Utilities.CallByName(target, e.PropertyName, CallType.Get);

         if (value == Guid.Empty)
            e.Description = String.Format("{0} required", RuleArgs.GetPropertyName(e));
            return false;

         return true;

Now I can use this custom rule to add a required GUID validation rule to my object on my AccountIdProperty.

ValidationRules.AddRule(CustomRules.GuidRequired, AccountIdProperty);

Now that my rule has been added to my object, my WPF UI will now pickup the new validation rule.


Brian Lagunas

View all posts

Follow Me

Follow me on Twitter, subscribe to my YouTube channel, and watch me stream live on Twitch.