仅在网格(WPF)中为一行添加IsEnabled
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅在网格(WPF)中为一行添加IsEnabled相关的知识,希望对你有一定的参考价值。
我有一个包含三行的网格,第一行有一个复选框,最后一行有一些其他控件。我希望仅在启用复选框后才启用最后一个控件。我尝试了下面的示例,但是它不起作用。是否有更简单的方法来执行此操作,还是我必须在最后一行的每个控件上都写“ 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>
以上是关于仅在网格(WPF)中为一行添加IsEnabled的主要内容,如果未能解决你的问题,请参考以下文章
IsEnabled="False" 状态的 WPF 文本框未应用正确的背景颜色