2017-06-29 12 views
5

Próbuję sprawdzić, czy wartość obiektu wiążącego ma wartość Null w Xamarin Forms XAML DataTrigger, ale nie mogę go uruchomić. Próbowałem następujące:Jak sprawdzić wartość pustą obiektu w wyzwalaczach danych formularzy Xamarin?

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

    ... 

</StackLayout> 

Czy ktoś wie sposób to zrobić? Testowałem to tylko na Androidzie.

Edit: I złożyli raport o błędzie do Xamarin Bugzilla https://bugzilla.xamarin.com/show_bug.cgi?id=57863

+0

Czy otrzymujesz jakieś błędy? Czy inne powiązania działają poprawnie, tj. Czy zdecydowanie próbuje sprawdzić wartość zerową, to jest problem? – spaceplane

+0

Nie widzę żadnych błędów i tak, inne powiązania działają poprawnie. – hamalaiv

+0

Właśnie go przetestowałem, a także otrzymuję ten sam problem ... może to być błąd Xamarina. Jednym obejściem byłoby użycie konwertera, który implementuje IValueConverter? – spaceplane

Odpowiedz

1

Można użyć konwertera i ustawione na niej swoją pracę dla mnie. Spróbuj poniżej kodu.

Code Converter

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; 
     } 
    } 

i powiązać z własności IsVisible jak poniżej:

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

Nie pamiętasz poniżej linii w nagłówku

xmlns: Pomocnicy = "clr-namespace: MyNameSpace"

0

Jest to błąd z Xmarin Forms here

+0

Tak, złożyłem to. Zmodyfikowałem teraz pytanie, aby dołączyć link do zgłaszania błędów. – hamalaiv

Powiązane problemy