why isn't it automatic and behind the scenes.
This would work as long as there is only one action for one property of one component is involved, but as soon as there are more actions, maybe actions which are dependent on each other, one would have a high risk of running into race conditions. The explicit "Invoke" mechanics works like a transactional bracket and lets the programmer group multiple statements in an atomic fashion together.
For example, if WPF would invoke control actions "behind the scenes", each control property access would be a deferred one on its own. That would lead to very strange effects for code like this:
lblerrorName.Content = "ABC"; // this assignment is deferred
lblerrorName.Content = lblerrorName.Content + "DEF"; // "ABCDEF"? Maybe not.
Such code could produce different behaviour when run in the UI thread, outside the UI thread, or in a debugger in a step-by-step manner.
However, explicit invoking allows the programmer to bundle different component manipulation statements intentionally together:
lblerrorName.Content = "ABC";
lblerrorName.Content = lblerrorName.Content + "DEF"; // "ABCDEF"
So this is way less error-prone than an automatism.
As a secondary point, in scenarios where one has to manipulate a multiple control data, maybe in a loop, automatic invoking could als have a notable performance impact.