While working on my post on "Data Binding in Silverlight with RIA and Entity Framework - Part 3 (Validating Input Data)" , a series of article on RIA Services , i came across a situation where i wanted to validate my textbox control on a particular event.For e.g on LostFocous.As we know the the validation fire 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 need to be triggered explicitly on our demand.For e.g refer my StatesOfIndia Application as the user provides some value at state Name and moves on , the validation need to be fired.
So to implement the validation on LostFocus of StateName textbox follow the steps bellow ,
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 , so 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);
As soon as the property gets changed the validation will fire .
This is for now , soon i will post with a detailed article on validation.Stay Tuned