What I usually do is have the view component use binding expressions on the individual controls to manage their visibility or enablement. Or if there is a significant amount of binding going on (5 or more controls need to be hidden or shown according to a single expression), I'll instead use a view state that is controlled by binding.
So essentially, the view component can be intelligent enough to configure itself properly based on the data it is given. This, IMHO, is better than having another actor (like a mediator) puppet a dumb view component. The view component has no other reason to exist than to expose the data for view and/or manipulation, so it's going to have to know the data somewhat.