仅在网格(WPF)中为一行添加IsEnabled

问题描述 投票:0回答:1

我有一个包含三行的网格,第一行有一个复选框,最后一行有一些其他控件。我希望仅在启用复选框后才启用最后一个控件。我尝试了下面的示例,但是它不起作用。是否有更简单的方法来执行此操作,还是我必须在最后一行的每个控件上都写“ 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>
wpf grid isenabled
1个回答
0
投票

IsEnabledGrid上设置Row属性不会启用/禁用分配给它的控件,因为它们不是该行的Children元素。但是,如果将放入任何布局(StackPanelGridWrapPanel等)并绑定该布局的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>
© www.soinside.com 2019 - 2024. All rights reserved.