Issue
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:
<Entry
x:Name="TextEntry"
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?
Solution
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
xmlns:Helpers="clr-namespace:HikePOS.Helpers"
Option Two: Trigger
<Label x:Name="MainLabel" isVisible="{Binding IsVisibleEntry}">
<Label.Triggers>
<DataTrigger TargetType="Label" Binding="{Binding IsVisibleEntry}" Value="True">
<Setter Property="IsVisible" Value="False" />
</DataTrigger>
</Label.Triggers>
</Label>
Answered By - Ziyad Godil
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.