WPF привязать включенное свойство одного элемента управления к CheckBox

1

Я пытаюсь связать свойство 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>
  • 0
    stackoverflow.com/questions/3099402/...
  • 0
    Вы уверены, что ваша привязка может видеть "aCheckBox" ?? Можете ли вы предложить больше кода, как мы можем видеть aCheckBox ??
Показать ещё 3 комментария
Теги:
xaml
wpf

1 ответ

0

Хотя это старый вопрос, но все же здесь ответ на оригинальный вопрос в названии для кого-то другого, спотыкающийся здесь, как я:

<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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню