I developed a user control in SilverLight that contains several child controls. Textboxes
, ComboBoxes
and so on.
The problem is, when I include that UserControl
into a parent view and set the complete control to IsEnabled=False
, the child controls in that specific UserControl
are still enabled.
After all I found the problem.
Adding something like that, implies that the IsEnabled
Binding is located in the UserControl
binding, not as expected from myself in the DataContext
of the parent.
<localControls:TeamEmployeeSelector Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
IsEnabled="{Binding CanModify}" DataContext="{Binding Confidentiality}"/>
QUESTION:
But there's still the question how I can bind the IsEnabled
to the ViewModel of the Parent? Because it's not very elegant to copy the CanModify
Property to the ViewModel of the Child Control.
Instead of modifying a binding in some way (for example you can make it dependent on other control name as it is proposed in other answer) I would move separate the control which will be disabled and control where DataContext
will be changed. For example:
<ContentControl IsEnabled="{Binding CanModify}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<localControls:TeamEmployeeSelector DataContext="{Binding Confidentiality}"/>
</ContentControl>