You can actually find this very example in TempHire.
https://github.com/IdeaBlade/Cocktail/blob/master/Samples/TempHire/DomainModel/Address.cs
See the Validate method at the bottom. The method is called by the EntityManagerDelegate during a save and if validation errors occur, Cocktail automatically cancels the save and notifies the UI as documented (see above link).
https://github.com/IdeaBlade/Cocktail/blob/master/Samples/TempHire/TempHire/EntityManagerDelegate.cs
You can't force this particular validation in TempHire at the moment, because the way the current combobox is bound, the State property is always set to a valid state. You can see other validation rules in action, though by not filling in the zipcode for example. The validation rules for the zip code are specified using validation attributes on the property. Cocktail automatically executes all validation rules before allowing the save to proceed.
[DataMember]
[Required]
[StringLength(10, MinimumLength = 5)]
public string Zipcode { get; set; }
Besides the red boxes on the UI in case of a validation error, TempHire also reacts to validation errors by displaying an error popup. It does this by implementing IValidationErrorNotification, which in turn simply publishes a message to the EventAggregator.
https://github.com/IdeaBlade/Cocktail/blob/master/Samples/TempHire/Common/Validation/ValidationErrorHandler.cs
The message is then processed by the ValidationErrorMessageProcessor, which displays the error popup.
https://github.com/IdeaBlade/Cocktail/blob/master/Samples/TempHire/Common/Validation/ValidationErrorMessageProcessor.cs