Я пытаюсь связать свойство IsEnabled
элемента управления с свойством IsChecked
CheckBox
используя следующий XAML, поэтому элемент управления будет включен или отключен на основе состояния CheckBox
.
<Setter Property="IsEnabled" Value="{Binding IsChecked, ElementName=aCheckBox, UpdateSourceTrigger=PropertyChanged}" />
Это не работает. Что не так?
EDIT: спасибо за все ваши комментарии! ниже - от style.xaml, теперь на основе комментария @Ivan. TextBlock имеет значение "серый" при отключении (взято отсюда)
<Style x:Key="printCkBox" TargetType="CheckBox">
<Setter Property="LayoutTransform">
<Setter.Value>
<ScaleTransform ScaleX="2" ScaleY="2"/>
</Setter.Value>
</Setter>
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style x:Key="fileInfoTxtBlkBase" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="IsEnabled" Value="{Binding ElementName=printCkBox, Path=IsChecked, NotifyOnSourceUpdated=True}"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{StaticResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="filenameTxtBlk" BasedOn="{StaticResource fileInfoTxtBlkBase}" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Left"/>
</Style>
Хотя это старый вопрос, но все же здесь ответ на оригинальный вопрос в названии для кого-то другого, спотыкающийся здесь, как я:
<DockPanel>
<CheckBox x:Name="CbxAgree" Content="Agreed" FontSize="21"
Background="Black" Foreground="Black"
VerticalAlignment="Center" Margin="8 4 16 4"
IsChecked="True" />
<Button VerticalAlignment="Stretch"
Background="White" Foreground="Black"
Content="Submit" FontSize="22"
IsEnabled="{Binding ElementName=CbxAgree, Path=IsChecked}"/>
</DockPanel>