如果未选中复选框,Wpf 会更改按钮的可见性

问题描述 投票:0回答:1

这是我的资源转换器

 <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />

我有 2 个按钮和 1 个复选框

如果选中复选框,我想显示的添加按钮 以及我想显示的编辑按钮是否选中复选框选中

<Button x:Name="Update"  Content="שמור שינויים" Grid.Row="3"  Height="30" Visibility="{Binding IsChecked  ,TargetNullValue=true, ElementName=Checked, FallbackValue=Hidden, Converter={StaticResource BoolToVisConverter}}" Margin="10,23,10,22" Background="LightBlue"  FontSize="15" Click="upDate_Click"  />
        <Button x:Name="Add"  Content=" הוספה" Grid.Row="4"  Height="30" Visibility="{Binding !IsChecked , FallbackValue=Visible, TargetNullValue=false, ElementName=Checked, Converter={StaticResource BoolToVisConverter}}" Margin="10,10,10,35" Background="LightBlue"  FontSize="15" Click="Add_Click"  />
        <CheckBox x:Name="Checked" IsChecked="True"   />

但是{Binding !IsChecked 不起作用

如果选中,如何隐藏元素?

wpf wpf-controls
1个回答
0
投票

尝试使用此转换器:

public class InvertedBooleanToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is bool boolValue) {
                return !boolValue ? Visibility.Visible : Visibility.Collapsed;
            }
            return Visibility.Collapsed;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

在你的xaml.cs中:

<Button x:Name="Add" Content=" הוספה" Grid.Row="4" Height="30"
            Visibility="{Binding IsChecked, ElementName=Checked, Converter={StaticResource InvertedBoolToVisConverter}}"
            Margin="10,10,10,35" Background="LightBlue" FontSize="15" />

不要忘记将转换器包含在资源中:

    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
        <local:InvertedBooleanToVisibilityConverter x:Key="InvertedBoolToVisConverter" />
</Window.Resources>
© www.soinside.com 2019 - 2024. All rights reserved.