Based on the documentation via MSDN...
You can also use InvalidateProperty to force re-evaluation of a binding against a data source that is not a
As you mentioned, it ought to work but doesn't. But there is a simple workaround:
// Doesn't work:
//b.InvalidateProperty(Button.ContentProperty);
// Works:
BindingOperations.GetBindingExpression(b, Button.ContentProperty).UpdateTarget();
I debugged into the reference source and all InvalidateProperty
does in your situation is cause a cached value to be re-read from the BindingExpression
into the Button
Content
property. Offhand, I don't know when this would even be necessary but it's not useful to get the BindingExpression
to re-read the raw property.
Since the workaround is convenient and general, the only further effort warranted is filing a bug report with Microsoft.