Добавьте IsEnabled только для одной строки в сетке (WPF) - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть сетка из трех строк, где у меня есть флажок в первой строке и некоторые другие элементы управления в последней. Я хочу, чтобы последние элементы управления были включены только при включенном флажке. Я попробовал пример ниже, но он не работает. Есть ли более простой способ сделать это, или мне нужно написать «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>

1 Ответ

0 голосов
/ 07 февраля 2020

Установка свойства IsEnabled для Grid Row не включает / отключает присвоенные ему элементы управления, поскольку они не являются Children элементами этой строки. Однако если вы поместите в любой макет (StackPanel, Grid, WrapPanel, et c.) И свяжете свойство 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>
...