仅在网格(WPF)中为一行添加IsEnabled(示例代码)

2021-04-13

栏目: 类库 ·

简介  这篇文章主要介绍了仅在网格(WPF)中为一行添加IsEnabled(示例代码)以及相关的经验技巧,文章约1396字,浏览量381,点赞数7,值得推荐!

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

以上就是本文的全部内容,希望对大家的学习有所帮助,本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关文章

C#中为DataGrid添加下拉列表框(转载)

[使用箭头键的WPF数据网格单元格循环

Windows Presentation Foundation(WPF)项目中不支持网格(示例代码)

WPF中Grid实现网格,表格样式通用类(转)

仅在启用按钮时输入(示例代码)

如何通过列和行索引获取WPF网格中单元格的x,y坐标

阻止WPF控件在MouseMove事件上重叠(示例代码)

CORS过滤器仅在Chrome中为POST提供403(示例代码)