WPF - Error when using ValidationStep

We need to update the source when a validation on a control fails. So we tried using ValidationStep to achieve that.

The source gets updated but we get the following error from the control being validated.
"Value to validate is not the expected type: expected System.String but got System.Windows.Data.BindingExpression instead."

Hi AvanadeSupport. That link is really not very helpful. We're having the same problem with:

ValidationStep="CommittedValue"

The specific scenario we are trying to accomplish is to allow for the value being validated (typed in by the user) to pass through to a view-model in an M-V-VM scenario so that the view-model (as source in this binding) is synchronized with the data in the
view (the WPF control). The default behavior causes broken validation rules to prevent updating of the source (the requirement of the original post as well as our own). When we change the default behavior to CommittedValue (or UpdatedValue) the
source gets updated, but the validation rule throws the error which winds up attached to the errors for the control, accessed via:

Validation.GetErrors(senderCtrl)

Can someone who is familiar with the Validation Block and the varying behaviors of ValidationStep please shed some more light on why the ValidationRule (specifically Microsoft.Practices.EnterpriseLibrary.Validation.Validators.ValueAccessValidator.DoValidate()
line 65) would erroneously attempt to validate a BindingExpression as opposed to the actual text in either of these cases and how we can work around (or preferably correct) this?

We are experiencing similar problems with VAB integration with WPF, also using the MVVM pattern (actually a hybrid MVP+VM pattern, but close enough in this case).

We need our UI fields to validate when they lose focus, but we also need full form validation if the user clicks the "Ok" button, at which point any validation errors will be displayed in a MessageBox.

The most natural way to achieve this is to apply the validation rules to the controls in XAML markup (UpdateSourceTrigger="LostFocus"), and then attempt to validate the full source object on OK click. But this will
only work if the invalid values are applied to our source object. We thought the ValidationStep property would solve this (UpdatedValue or
CommittedValue), but alas, it does not seem to be work. This is such a shame. If this worked as expected, we would have a really clean architecture with validation possible at the View and Presenter levels.

Since this doesn't seem to be the case, has anyone found a clean workaround?

I tried handling the LostFocus event on the controls, and forcing an update of the source:

I looked up the ValidatorRule class that existed. It explicitely said in the comments that only ConvertedProposedValue is supported, because it receives a binding expression otherwise.

I heavily modified the class to be able to handle binding expressions using reflection. However, it does not supports path that contains index brackets '[0]'. Hope that helps.

using System;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Windows.Controls;
using System.Windows.Data;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using SWC = System.Windows.Controls;
namespace namespaceTest