我有一个包含三行的网格,第一行有一个复选框,最后一行有一些其他控件。我希望仅在启用复选框后才启用最后一个控件。我尝试了下面的示例,但是它不起作用。是否有更简单的方法来执行此操作,还是我必须在最后一行的每个控件上都写“ IsEnabled = ...”?
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" IsEnabled="{DataBinding:DataBinder FooProperty}"/>
</Grid.RowDefinitions>
<Checkbox Grid.Row=0 IsChecked="{DataBinding:DataBinder FooProperty}" ...../>
<Label Grid.Row="2" ...../>
<Slider Grid.Row="2" ...../>
</Grid>
在IsEnabled
的Grid
上设置Row
属性不会启用/禁用分配给它的控件,因为它们不是该行的Children
元素。但是,如果将放入任何布局(StackPanel
,Grid
,WrapPanel
等)并绑定该布局的IsEnabled
属性,则子控件将受到影响。
这里是一个例子:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox x:Name="CheckBox1" Grid.Row="0"/>
<StackPanel Grid.Row="2" IsEnabled="{DataBinding:DataBinder FooProperty}">
<Label Content="Label"/>
<Slider />
</StackPanel>
</Grid>