2017-06-29 14 views
5

मैं यह जांचने की कोशिश कर रहा हूं कि Xamarin फॉर्म XAML डेटा ट्रिगर में बाध्यकारी ऑब्जेक्ट मान शून्य है या नहीं, लेकिन मैं इसे काम नहीं कर सकता। मैंने निम्नलिखित कोशिश की है: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> 

क्या कोई इसे करने का कोई तरीका जानता है? मैंने केवल एंड्रॉइड पर इसका परीक्षण किया है।

संपादित करें: मैं बगजिला Xamarin को https://bugzilla.xamarin.com/show_bug.cgi?id=57863

+0

क्या आपको कोई त्रुटि मिल रही है? क्या अन्य बाइंडिंग सही ढंग से काम करते हैं, यानी क्या यह निश्चित रूप से इस मुद्दे की जांच करने की कोशिश कर रहा है? – spaceplane

+0

मुझे कोई त्रुटि नहीं दिखाई दे रही है और हाँ अन्य बाइंडिंग सही तरीके से काम कर रहे हैं। – hamalaiv

+0

मैंने अभी इसका परीक्षण किया है और एक ही समस्या भी प्राप्त की है ... यह एक एक्समारिन बग हो सकता है। एक वर्कअराउंड एक कनवर्टर का उपयोग करना होगा जो IValueConverter लागू करता है? – 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 रेखा से नीचे भूल न करें "क्लियर-नेमस्पेस: माईनाम स्पेस"

0

एक्समरिन फॉर्म here

+0

हाँ मैंने इसे दायर किया। मैंने बग्रेपोर्ट लिंक को शामिल करने के लिए अब सवाल संपादित किया है। – hamalaiv

संबंधित मुद्दे