How to check object zero value in xamarin form data triggers?

I am trying to check if the value of the binding object is null in Xamarin Forms XAML DataTrigger, but I cannot get it to work. I tried the following:

<StackLayout IsVisible="True"> <StackLayout.Triggers> <DataTrigger TargetType="StackLayout" Binding="{Binding MyObject}" Value="{x:Null}"> <Setter Property="IsVisible" Value="False"></Setter> </DataTrigger> </StackLayout.Triggers> ... </StackLayout> 

Does anyone know a way to do this? I tested this only on Android.

Edit: I sent a bug report to xamarin bugzilla https://bugzilla.xamarin.com/show_bug.cgi?id=57863

+9
source share
3 answers

You can use the converter and configure your work for him for me. Let's try to make the code below.

Converter Code

 public class NullValueBoolConverter: IValueConverter, IMarkupExtension { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is string) { if (string.IsNullOrEmpty(value as string)) { return false; } else { return true; } } else { if (value == null) { return false; } else { return true; } } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value; } public object ProvideValue(IServiceProvider serviceProvider) { return this; } } 

And bind the IsVisible property as shown below:

 <StackLayout IsVisible="{Binding Registerclosure.Notes, Converter={Helpers:NullValueBoolConverter}}"> </StackLayout> 

Do not go below the title bar

XMLNS: Helpers = "CLR Names: MyNameSpace"

+3
source

His mistake with Xmarin forms is here

+1
source

Just optimizing the code in the previous solution

  public class NullValueBoolConverter : IValueConverter, IMarkupExtension { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is string) { string val = value as string; return !string.IsNullOrEmpty(val); } return !(value == null); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value; } public object ProvideValue(IServiceProvider serviceProvider) { return this; } } 
+1
source

Source: https://habr.com/ru/post/1269325/


All Articles