2010-07-14 18 views
6

मैं एक PriorityBindingयदि प्राथमिकता वापस आती है तो मैं प्राथमिकता बाइंडिंग कैसे विफल कर सकता हूं?

<PriorityBinding FallbackValue="Bindings were null"> 
    <Binding Path="Foo" /> 
    <Binding Path="Bar" /> 
</PriorityBinding> 

मैं इसे बनाने के लिए, इसलिए यदि फू रिक्त है यह बार प्रयोग करेंगे चाहते हैं और अगर दोनों अशक्त हैं यह FallbackValue का प्रयोग करेंगे। हालांकि शून्य इस संपत्ति के लिए एक वैध मान है क्योंकि यह केवल एक वस्तु की अपेक्षा करता है।

क्या प्राथमिकता बाध्यकारी अग्रिम बाध्यकारी को अग्रिम बाध्यकारी करने का कोई तरीका है जब मान शून्य है? मैं इसे एक्सएएमएल में करना पसंद करूंगा, लेकिन अगर मैं नहीं कर सकता तो मैं इसके लिए एक कनवर्टर बनाउंगा।

संपादित

मैं समाप्त हो गया बस एक कनवर्टर लिखने के लिए यह

public class NullToDependencyPropertyUnsetConverter 
    : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value ?? DependencyProperty.UnsetValue; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

इसे देखें: http://stackoverflow.com/questions/6947728/equiv-to-coalesce-in-xaml- बाइंडिंग –

+0

मैं इस तरह की चीज़ के बारे में सोच रहा था। मेरी ऑब्जेक्ट्स में बहुत सारी गैर-शून्य गुण हैं, इसलिए जब मैं प्राथमिकता बाइंडिंग का उपयोग करने का प्रयास करता हूं, तो मुझे सूची के नीचे अगले के बजाय खाली मान मिलते हैं। – Patrick

उत्तर

5

मैं UnsetValue लौटने अगर सीमित मान रिक्त है valueconverter साथ जाना चाहते हैं।

प्राथमिकता बाइंडिंग अधिक उपयोगी हैं यदि आप विभिन्न प्रकार की वस्तुओं के बीच डेटामैप्लेट साझा करना चाहते हैं।

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