While working on my post on “Data Binding in Silverlight with RIA and Entity Framework – Part 3 (Validating Input Data)”, a series of articles on RIA Services, I came across a situation where I wanted to validate my textbox
control on a particular event. For example, on LostFocous
. As we know, the validation fires only when the source property value gets changed and the entity gets updated. But you might have known that the Textbox
TextProperty
gets updated on LostFocus
(MSDN Link). This is the default behaviour but it does not work with RIA Service in Textbox
.
And most of the time, the validation on the client side needs to be triggered explicitly on our demand. For example, refer to my StatesOfIndia application as the user provides some value at state Name and moves on, the validation needs to be fired.
So to implement the validation on LostFocus
of StateName textbox
, follow the steps below.
Make Sure You Have Implemented the Validation Rule at Model Entity Member
In the Metadata file, I have added Required Attribute for the statename
.

Change the UpdateSourceTrigger of Textbox
Then, change the UpdateSourceTrigger
property of the binding of the Textbox
to explicit mode.

Update the Source at your Desired Event
As I want to force updation of data as well as fire validation on lost focus event, I am going to get the binding expression of the control and update its source.
private void txtStateName_LostFocus(object sender, RoutedEventArgs e)
{
System.Windows.Data.BindingExpression bexpress = txtStateName.GetBindingExpression(
TextBox.TextProperty);
bexpress.UpdateSource();
}
As soon as the property gets changed, the validation will fire.
This is for now. Soon, I will post a detailed article on validation. Stay tuned! :)