代码之家  ›  专栏  ›  技术社区  ›  24sharon

如果未选中复选框,Wpf将更改按钮的Visiblity

  •  0
  • 24sharon  · 技术社区  · 1 年前

    这是我的追索权转换器

     <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
    

    我有两个按钮和一个复选框

    如果复选框被选中,我要显示的“添加”按钮 如果复选框为 选中的

    <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不起作用

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

    1 回复  |  直到 1 年前
        1
  •  1
  •   Yoji    1 年前

    尝试使用此转换器:

    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>