[FIXED] Xamarin Forms – negate bool binding values


I am learning the xamarin forms and mvvm pattern. I am wondering, if is it possible to negate binding bool value. What I mean is:

I have, let’s say Entry with isVisible Binding:

    IsVisible="{Binding IsVisibleEntry}"

and Label which i want to hide when TextEntry is visible.

<Label x:Name="MainLabel" 
       isVisible="!{Binding IsVisibleEntry}"/> //ofc it is not working

Is it possible to do without making a new variable for MainLabel in ViewModel?


Option One: Converter

Define the converter:

    public class InverseBoolConverter : IValueConverter
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            return !((bool)value);
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            return value;
            //throw new NotImplementedException();

Usage in XAML:

    <Label x:Name="MainLabel" 
           isVisible="{Binding IsVisibleEntry, Converter={Helpers:InverseBoolConverter}}"/>

XAML Header


Option Two: Trigger

    <Label x:Name="MainLabel" isVisible="{Binding IsVisibleEntry}">
            <DataTrigger TargetType="Label" Binding="{Binding IsVisibleEntry}" Value="True">
                <Setter Property="IsVisible" Value="False" />

Answered By – Ziyad Godil

Answer Checked By – Cary Denson (Easybugfix Admin)

Leave a Reply

(*) Required, Your email will not be published