如何检查xamarin表单数据触发器中的对象null值?

如何检查xamarin表单数据触发器中的对象null值?

问题描述:

我想检查绑定对象的值是否在Xamarin Forms XAML DataTrigger中为空,但我无法让它工作。我试过以下内容:如何检查xamarin表单数据触发器中的对象null值?

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

    ... 

</StackLayout> 

有没有人知道一种方法来做到这一点?我只在Android上测试过。

编辑:我已经提交了一份bug报告xamarin的Bugzilla https://bugzilla.xamarin.com/show_bug.cgi?id=57863

+0

您是否收到任何错误?其他绑定是否可以正常工作,也就是说它确实试图检查null是否是问题? – spaceplane

+0

我没有看到任何错误,是的其他绑定工作正常。 – hamalaiv

+0

我刚刚测试过它,也得到同样的问题......它可能是一个Xamarin错误。一种解决方法是使用实​​现IValueConverter的Converter? – spaceplane

您可以使用转换,并且设置它的工作对我来说。让我们试试下面的代码。

转换代码

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

并与IsVisible属性绑定象下面这样:助手=:

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

不要在头

的xmlns忘记下面线“clr-namespace:MyNameSpace”

其与Xmarin Forms的错误 here

+0

是的,我提交了。我现在编辑了这个问题以包含bugreport链接。 – hamalaiv