Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF element databinding for IsEnabled (but for false)

I'm a starter in WPF, and there's something I can't seem to figure out.

I have a CheckBox that I would like to disable when a RadioButton is not selected. My current syntax is:

<CheckBox IsEnabled="{Binding ElementName=rbBoth, Path=IsChecked}">Show all</CheckBox>

So basically, I want IsEnabled to take the opposite value than the binding expression I'm currently supplying.

How can I do this? Thanks.

like image 224
SiN Avatar asked Jun 23 '10 06:06

SiN


2 Answers

You need to use what's called a value converter (a class that implements IValueConverter.) A very basic example of such a class is shown below. (Watch for clipping...)

public class NegateConverter : IValueConverter
{

    public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
    {
        if ( value is bool ) {
            return !(bool)value;
        }
        return value;
    }

    public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
    {
        if ( value is bool ) {
            return !(bool)value;
        }
        return value;
    }

}

Then to include it in your XAML you would do something like:

<UserControl xmlns:local="clr-namespace:MyNamespace">
    <UserControl.Resources>
        <local:NegateConverter x:Key="negate" />
    </UserControl.Resources>

    ...
    <CheckBox IsEnabled="{Binding IsChecked, ElementName=rbBoth, Converter={StaticResource negate}}"
              Content="Show all" />

</UserControl>
like image 196
Josh Avatar answered Oct 02 '22 09:10

Josh


<CheckBox>
                    <CheckBox.Style>
                        <Style TargetType="CheckBox">
                            <Setter Property="Visibility" Value="Visible" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsShowName }" Value="true">
                                    <Setter Property="Visibility" Value="Collapsed" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </CheckBox.Style>
  </CheckBox>
like image 40
Meysam Chegini Avatar answered Oct 02 '22 10:10

Meysam Chegini