IMO, ConvertBack
विधि विशिष्ट डेटा प्रकार के डेटा के अपने दृश्य प्रतिनिधित्व कन्वर्ट करने के लिए प्रयोग किया जाता है।
उदाहरण के लिए: आप एक बोरियन true
स्ट्रिंग "TrueBoolean"
में कनवर्ट करने के लिए कनवर्टर का उपयोग करते हैं। यह टेक्स्ट आपके टेक्स्टबॉक्स में प्रदर्शित होगा। जब आप टेक्स्टबॉक्स का मान बदलते हैं, तो ConvertBack
विधि को बाध्यकारी आग के रूप में जल्द ही कॉल किया जाएगा (डिफ़ॉल्ट ऑनफोकसलोस्ट)। अब आपकी ConvertBack
विधि नए मान को उस डेटाटाइप में बदलने की कोशिश करेगी, जिसे आप चाहते हैं। तो आपको "FalseBoolean"
से false
में कनवर्ट करने के लिए तर्क लागू करना होगा।
public class Converter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool) value ? "TrueBoolean" : "FalseBoolean";
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = (string) value;
if (s.Equals("TrueBoolean",StringComparison.CurrentCultureIgnoreCase))
return true;
if (s.Equals("FalseBoolean", StringComparison.CurrentCultureIgnoreCase))
return false;
throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
}
}
अगर मैं गलत नहीं हूं तो इस तकनीक का उपयोग डेटाग्रिड्स में बहुत अधिक होता है।
आशा इस थोड़ा स्पष्ट है ...
अद्यतन
बारे में आप टिप्पणी में सवाल:
:
डिफ़ॉल्ट
OnFocusLost
बाध्यकारी व्यवहार आप अपने इस तरह बाध्यकारी बदलना होगा ओवरराइट करने के लिए
<TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>
<!--syntax might differ, can't access VS at the moment.-->
@ रोएल, हाँ, लेकिन मेरे मामले में कनवर्टबैक आग लग रहा है जब मैं खिड़की बंद कर रहा हूं, क्या यह अजीब नहीं है? –
नहीं, मुझे लगता है कि यह सामान्य व्यवहार है: खिड़की बंद होने से पहले, टेक्स्टबॉक्स का ऑनफोकसलोस्ट ईवेंट निकाल दिया जाएगा, या कम से कम बाध्यकारी अपडेट हो जाएगा। – RoelF
@ रोएल, यदि मुझे टेक्स्टबक्स के टेक्स्ट में कोई भी परिवर्तन करने के बाद मुझे कनवर्टबैक विधि कॉल करने की आवश्यकता है तो मुझे क्या करना चाहिए? मुझे अद्यतन स्रोत ट्रिगर संपत्ति नहीं मिली क्योंकि @ डोमिनिक कहते हैं ... –