tags:

views:

19

answers:

1

I want to validate all the TextBox controls on the page load event. I'm aware of one method to do this. Here's what I used.

BindingExpression bx = myTextBox.GetBindingExpression( TextBox.TextProperty );

if(bx != null)
    bx.UpdateSource();

I have a custom ValidationRule that checks if a field is required or not for some of my TextBoxes. Now if I run this code on the page load, it doesn't work. However, if I put this code into a button click event instead, then it works!

How do I validate my controls on a control load?

A: 

Try putting the code inside a Dispatcher.Begininvoke

    Dispatcher.BeginInvoke(new Action(() => {
          BindingExpression bx = myTextBox.GetBindingExpression(TextBox.TextProperty);

          if (bx != null)
            bx.UpdateSource();
    }));
mdm20
This works but do you have any explanation as to why? I'm not on a separate thread. The code being executed is running on the UI thread.
Matt
I'm not exactly sure. I just know that some stuff isn't available when the Loaded event fires... apparently this is one of those cases.
mdm20