2017-06-29 36 views
5

我想檢查綁定對象的值是否在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

回答

1

您可以使用轉換,並且設置它的工作對我來說。讓我們試試下面的代碼。

轉換代碼

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」

0

其與Xmarin Forms的錯誤 here

+0

是的,我提交了。我現在編輯了這個問題以包含bugreport鏈接。 – hamalaiv

相關問題