仅在网格(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>
答案

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>

以上是关于仅在网格(WPF)中为一行添加IsEnabled的主要内容,如果未能解决你的问题,请参考以下文章

IsEnabled="False" 状态的 WPF 文本框未应用正确的背景颜色

在 ASP.NET MVC 中为 KendoUI 网格控件中的每一行添加一个包含超链接的列

在 WPF Datagrid 中为网格线着色

如何在材质ui中为网格项添加新行?

可以在 WPF 数据网格中禁用 F2 键吗?

WPF IsEnabled 和 IsHitTestVisible